gpt4 book ai didi

spring rest 测试@JsonFormat 注解

转载 作者:行者123 更新时间:2023-12-05 06:36:33 25 4
gpt4 key购买 nike

我需要测试我的端点/people 是否返回正确的 json 值。我在我的 Person 模型中使用“@JsonFormat 注释,当我使用 Postman 或浏览器时,它会以“dd-MM-yyyy”格式生成正确的日期。

例子:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyy")
private LocalDate birthDate;

并且在 json 中输出是正确的-> birthDate: "01-01-2000"

但是如果我想测试我的 Controller ,它会产生以下错误:

Expected: is "01-01-2000"
but: was <{year=2000, month=JANUARY, monthValue=1, dayOfMonth=1,
chronology={id=ISO, calendarType=iso8601}, leapYear=true,
dayOfWeek=SATURDAY, dayOfYear=1, era=CE}>

不知道哪里出了问题。我的测试方法如下所示:

//given
Person testPerson = new Person("Jan", "Kowalski", LocalDate.of(2000, 1, 1),
LocalDate.of(2005, 12, 31), "123456");
List<Person> peopleList = Arrays.asList(testPerson);

//when
Mockito.when(personRepository.findAll()).thenReturn(peopleList);

//then
mockMvc.perform(get("/people"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(MockMvcResultMatchers.jsonPath("$[0].birthDate", Matchers.is("01-01-2000"))));

提前致谢!

最佳答案

有了 jackson-datatype-jsr310 依赖,实际上它应该自动格式化,你不需要任何注释。当你确认你有这种依赖时,不确定为什么它没有给出正确的格式。确保它在运行时类路径中(干净的 .m2 目录 :-) 并且相信我有时它会有所帮助。 )

其他,您可以尝试下面给出的代码。

 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate birthdate;

关于spring rest 测试@JsonFormat 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48976011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com