Spring MVC 5 ResultMatcher jsonPath 空值

Posted

技术标签:

【中文标题】Spring MVC 5 ResultMatcher jsonPath 空值【英文标题】:Spring MVC 5 ResultMatcher jsonPath null value 【发布时间】:2018-08-23 02:29:53 【问题描述】:

在将我的休息服务从 Spring Boot 1.5.10 升级到 2.0.0 之后,我遇到了我之前通过的测试失败。

以下场景:

import org.mockito.internal.matchers.Null;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;

...

.andExpect(jsonPath("img").value(Null.NULL))

现在在 Spring MVC 5 中失败并显示以下消息:

java.lang.AssertionError:JSON 路径“img” 预期:isNull() 实际:null

Spring MVC 5 中断言jsonPath 的值为null 的正确方法是什么?

【问题讨论】:

你在使用 jayway lib 的 jsonpath 吗?能否请您显示 jsonpath 的名称包名称? 我正在使用org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; 另一种方法是使用 new JsonPathExpectationsHelper("$.img").assertValueIsEmpty(jsonContent); 【参考方案1】:

在我自己找到解决方案时回答我自己的问题。

你必须使用正确的匹配器,在我的例子中是org.hamcrest.core.IsNull

所以我不得不换成

import org.hamcrest.core.IsNull;
...
andExpect(jsonPath("img").value(IsNull.nullValue()))

【讨论】:

【参考方案2】:

你可以使用 content().srtring(Matcher matcher) 然后使用 IsEmptyString matcher

result.andDo(print())
      .andExpect(status().isNoContent())
      .andExpect(content().string(IsEmptyString.isEmptyOrNullString()));

【讨论】:

以上是关于Spring MVC 5 ResultMatcher jsonPath 空值的主要内容,如果未能解决你的问题,请参考以下文章

spring-mvc 5 j_spring_security_check 404页面错误

Spring 5 MVC Angular 5 App投掷404错误

SSM 三大框架系列:Spring 5 + Spring MVC 5 + MyBatis 3.5 整合(附源码)

spring 5.1.2 mvc HanderMapping源码

java框架5-Spring MVC

Spring MVC 之输入验证