java - 如何为 jsonPath 匹配器正确转换 java 对象?

标签 java json spring mockmvc

我正在为我的 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,您可以使用MockMvcResultMatcherscontent方法。

只需将 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/

相关文章:

java - 子类的构造函数中的堆栈溢出错误

java - 你可以专门化继承的Java注释吗

c# - 反序列化 json 抛出 'Additional text encountered' 错误

java - 用字符串填充 TableView

java - 如何旋转绘图面板中绘制的一系列线条和形状?

java - 使用 HttpClient 和 HttpMethod 放置包含内容的请求

javascript - 解析 JSON API 结果并加载到 Leaflet

java - 在jsp页面中获取LinkedHashMap中存储的元素

java - Apache Camel Spring Ws 配置中的 PropertyAccessException

java - 使用 RestTemplate 的 spring webservices 的超时配置