我有一个资源,它返回一个具有java.time.Instant
属性的对象。
class X {
...
private Instant startDate;
...
}
字符串
我正在测试它:
mockMvc.perform(get("/api/x"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.content.[*].startDate").value(hasItem(MY_INSTANT_DATE)));
型
但我从JUnit得到的是:
Expected: a collection containing <2018-06-08T11:46:50.292Z> but: was <1528458378.397000000>
型
如何将我的Instant
日期Map到此格式?
2条答案
按热度按时间af7jpaap1#
我通过定制匹配器找到了一个解决方案:
字符串
工厂为它:
型
和用法:
型
jm2pwxwz2#
通常,不需要显式Map。如果JacksonMap器被告知将日期写入时间戳,就会发生这种情况。因此,有两个地方需要检查(因为默认情况下此功能是禁用的):
关于代码,您可以查看这篇Baeldung文章,其中显示了ObjectMapper调整的可能方法:https://www.baeldung.com/spring-boot-customize-jackson-objectmapper#customizing-the-default-objectmapper
关于应用程序的属性。适当的属性是
spring.jackson.serialization.write-dates-as-timestamps
,所以要么检查它是否被禁用,要么你可以显式地禁用它(从潜在原因列表中删除这一点):对于 *.yaml,您可以通过以下方式禁用它:
字符串
或者如果您使用
*.properties
文件型