如何验证合同中的日期格式?不久前我遇到了一个问题,我的服务继承了一个对象映射器,该映射器将我的服务返回的日期格式从毫秒更改为时间戳。我正在尝试编写一份可以捕捉日期格式更改的合同。这是我在合同中写的:
response {
status 200
body(
time: 1505276760077L
)
}
这是我在对象映射器中使用的内容:
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JodaModule());
/*
uncommenting this cause DateTime format to change from
milliseconds to timestamp
i.e., 1505276760077 changes to 2017-09-13T04:26:00.077Z
Either way, the test passes
*/
// objectMapper.configure(SerializationFeature
.WRITE_DATES_AS_TIMESTAMPS, false);
return objectMapper;
}
无论日期的格式如何,测试都会通过。当格式更改时,是否有某种方法可以使测试失败?
如果有帮助,我在这里有一个示例项目:https ://github.com/rtteal/consumer-driven-contacts-demo
更新:
我尝试更新我的合同以使用正则表达式,但这仍然不会导致我的测试在更改对象映射器时失败。
response {
status 200
body(
time: $(regex('[0-9]{13}'))
)
}
这是生成的测试的相关部分:
assertThatJson(parsedJson).field("['time']").matches("[0-9]{13}");
测试似乎忽略了对象映射器配置。我需要做些什么来让它在测试运行时拾取对象映射器吗?