如何为jsonPath匹配器正确转换java对象?
我正在为我的控制器编写mockMvc测试,需要验证jsonPath返回值 我尝试了不同的.is和.value映射,但没有成功如何为jsonPath匹配器正确转换java对象?,java,json,spring,mockmvc,Java,Json,Spring,Mockmvc,我正在为我的控制器编写mockMvc测试,需要验证jsonPath返回值 我尝试了不同的.is和.value映射,但没有成功 Loan loan = new Loan( "0000-0000", "OPEN", LocalDate.now(), LocalDate.now().plusDays(30), new BigDecimal("5
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$.*.valuejson替换为content.jsonjson,如下所示
当您点击postman上的端点时,响应看起来如何?postman响应[{id:8706-2150,状态:打开,创建:2019-05-09,截止日期:2019-06-08,本金:400,利息:40,总计:440,扩展:[]]
mockMvc.perform(get("/api/loans"))
.andExpect(content().json(json));