如何在测试 spring 可以签约 Web 服务时在放心模拟 mvc 中设置响应日期格式?

How to set response date format in rest assured mock mvc while testing spring could contract for a web service?

我正在使用 spring 云合同生成的测试来测试 Web 服务响应。 该服务过去使用 return 日期作为时间戳,现在使用更新的 Spring 版本 (2.0.5) 日期 returned in the "2018-11-30T21:16:18.220+0000 “ 格式。合同测试仍在通过,没有任何变化。我了解到这是因为 Spring 可以合同使用 RestAssuredMockMvc,它不知道 springs 应用程序配置。我如何更改合同中的配置以确保合同始终以与服务正确return编辑的格式相同的格式检查日期?

将缺少的配置添加到 mockmvc 放心设置或使用显式测试生成模式并设置真实的 spring 启动上下文

对于 Spring 启动应用程序,针对 spring 应用程序设置执行 RestAssured 的简单方法是:

@RunWith(SpringRunner.class)
@WebMvcTest
// or @SpringBootTest
public abstract class BaseContractTest {

    @Autowired
    protected MockMvc mockMvc;

    @Before
    public void setup() {
        RestAssuredMockMvc.mockMvc(mockMvc);
    }
}

带有@WebTestClient 的版本运行速度更快但需要模拟服务,带有@SpringBootTest 的版本运行速度较慢但可以利用整个应用程序。

在之前的回答中提出 RestAssuredMockMvc.webAppContextSetup() 与带有@SpringBootTest 的版本非常相似。第二个命题 RestAssuredMockMvc.standaloneSetup() 需要复杂的配置,不同于 Spring 应用程序配置。

因此 RestAssuredMockMvc.standaloneSetup() 容易出错,而且比 @WebMvcTest 更糟。

RestAssuredMockMvc.webAppContextSetup() 可以

尝试this

使用 RestAssuredMockMvc.standaloneSetup

设置对象映射器
RestAssuredMockMvc.standaloneSetup(
                MockMvcBuilders
                        .standaloneSetup(yourcontroller).setMessageConverters(mappingJackson2HttpMessageConverter)
        );