我正在为我的 Controller 编写mockMvc 测试,并且需要验证jsonPath 返回值。
以我能想象的任何方式尝试了不同的 .is() 和 .value() 映射,但没有成功
Loan loan = new Loan(
"0000-0000",
"OPEN",
LocalDate.now(),
LocalDate.now().plusDays(30),
new BigDecimal("500.0"),
new BigDecimal("50.0"),
new BigDecimal("550.0"),
new ArrayList<>()
);
Mockito.lenient()
.when(loanService.loans())
.thenReturn(Collections.singletonList(loan));
String json = MAPPER.writeValueAsString(loan);
mockMvc.perform(get("/api/loans"))
.andExpect(jsonPath("$.*").value(json));
Expected :{"id":"0000-0000","status":"OPEN","created":"2019-05-09","dueDate":"2019-06-08","principal":500.0,"interest":50.0,"total":550.0,"extensions":[]}
Actual :{id=0000-0000, status=OPEN, created=2019-05-09, dueDate=2019-06-08, principal=500.0, interest=50.0, total=550.0, extensions=[]}
这就是我得到的结果,只是不要在这里获取类型。
最佳答案
如果您想将完整的responseBody断言为json,您可以使用MockMvcResultMatchers
的content
方法。
只需将 jsonPath("$.*").value(json)
替换为 content().json(json)
如下
mockMvc.perform(get("/api/loans"))
.andExpect(content().json(json));
关于java - 如何为 jsonPath 匹配器正确转换 java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56049985/