java - 断言错误 : No value for JSON Path in JUnit test

标签 java json junit spring-mvc-test

我已经编写了一个测试并且它之前成功了,但现在我得到一个 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/

相关文章:

java - 你能在 CardLayout 上放置 SpringLayout "esque"约束吗?

java - 优雅地为 ExecutorServices 实现队列长度指示器

java - java中如何对JSON数组进行排序

java - 创建 JsonProcessingException

java - Spring Boot 测试中的 mockito 和多个 HTTP

java - 如何在 Scala 中指定 Foo.class?

java - 在Java中可以使用枚举作为列表元素吗?

javascript - 使用 Javascript 从 HTML 输入字段中提取 JSON 变量

java - 从 xml 转换时是否可以保持 JSON 的排序,反之亦然

java - jUnit 和 Guava,比较 transform() 后的列表相等性