我们正在编写Rest API的集成测试用例,其中我们正在验证Response DTO的所有属性的类型。在DTO中,我们有一个java.util.Date类型的属性。 但是,当它尝试使用
时 .andExpect(jsonPath("$.testDate", isA(Date.class)))
它使我们的测试用例
失败了预期:是java.util.Date的一个实例 但是:< 2343240000L>是一个java.lang.Long
请告诉我们如何使用集成测试用例验证日期类型。
答案 0 :(得分:1)
Spring使用Jackson来序列化JSON,Jackson默认将日期序列化为毫秒默认为@Reddy说。如果您希望使用以下格式的日期,请尝试使用monitoring
注释在DTO中注释 testDate 字段:YYYY-MM-DD
如果您想要其他格式,请尝试使用
@Temporal
并使用您想要的模式更改模式。
如果这两个解决方案不起作用,您必须为日期字段定义自定义序列化程序以解决问题,并使用@DateTimeFormat(pattern = "dd/MM/yyyy")
注释注释日期字段的get方法。
JsonDateSerializer将是您的自定义序列化程序类。
有关自定义序列化程序的更多详细信息,请参阅此答案 https://stackoverflow.com/a/38186623/6503002