将我的休息服务从 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 path "img">
Expected :isNull() 实际 :空
Spring MVC 5 中断言jsonPath
的值null
的正确方法是什么?
回答我自己的问题,因为我自己找到了解决方案。
您必须使用正确的匹配器,就我而言org.hamcrest.core.IsNull
所以我不得不改为
import org.hamcrest.core.IsNull;
...
andExpect(jsonPath("img").value(IsNull.nullValue()))
> 2022 年 4 月,Hamcrest 2.2
nullValue() 是一个独立的静态方法,可由org.hamcrest.CoreMatchers.nullValue
导入。
因此,更新的解决方案解析为
static import org.hamcrest.core.nullValue;
...
andExpect(jsonPath("img").value(nullValue()))
您可以使用 content().srtring(Matcher matcher),然后使用 IsEmptyString 匹配器
result.andDo(print())
.andExpect(status().isNoContent())
.andExpect(content().string(IsEmptyString.isEmptyOrNullString()));