我已经编写了一个测试并且它之前成功了,但现在我得到一个 AssertionError:JSON Path 没有值。
@Test
public void testCreate() throws Exception {
Wine wine = new Wine();
wine.setName("Bordeaux");
wine.setCost(BigDecimal.valueOf(10.55));
new Expectations() {
{
wineService.create((WineDTO) any);
result = wine;
}
};
MockMultipartFile jsonFile = new MockMultipartFile("form", "", "application/json", "{\"name\":\"Bordeaux\", \"cost\": \"10.55\"}".getBytes());
this.webClient.perform(MockMvcRequestBuilders.fileUpload("/wine").file(jsonFile))
.andExpect(MockMvcResultMatchers.status().is(200))
.andExpect(MockMvcResultMatchers.jsonPath("$.name").value("Bordeaux"))
.andExpect(MockMvcResultMatchers.jsonPath("$.cost").value(10.55));
}
我得到的错误是:
java.lang.AssertionError: No value for JSON path: $.name, exception: No results path for $['name']
我不明白它没有得到什么或缺少什么。
最佳答案
我遇到了同样的问题。
解决方案:
使用 .andReturn().getResponse().getContentAsString();
,您的响应将是一个字符串。我的回复是:
{"url":null,"status":200,"data":{"id":1,"contractName":"Test contract"}
当我尝试执行 .andExpect(jsonPath("$.id", is(1)));
时出现错误:java.lang.AssertionError: No value对于 JSON 路径:$.id
为了修复它,我做了 .andExpect(jsonPath("$.data.id", is(1)));
并且它起作用了,因为 id 是数据中的一个字段。
关于java - 断言错误 : No value for JSON Path in JUnit test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33659684/