使用 MockMVC 的 JsonPath OR 条件
JsonPath OR condition using MockMVC
我正在练习 MockMVC 以进行剩余调用单元测试。我们如何测试布尔值,以便结果是真还是假我需要通过测试,我试过如下,
mockMvc.perform(get("/student/{Id}", 1L)).
.andExpect(status().isOk())
.andExpect(jsonPath("$.isPass", is(true || false)));
我还有一个包含 6 个值的列表,如何使用列表包含所有类型的方法,
.andExpect(jsonPath("$.subjectList", hasSize(5)))
.andExpect(jsonPath("$.subjectList.name", Matchers.contains("English", "Hindi", "France", "Tamil", "Bengali"))
有什么建议吗!!
我建议使用 hamcrest AnyOf 逻辑匹配器
表格 Tutorial :
anyOf - matches if any matchers match, short circuits (like Java ||)
所以在你的情况下:
import static org.hamcrest.core.AnyOf.*;
mockMvc.perform(get("/student/{Id}", 1L)).
.andExpect(status().isOk())
.andExpect(jsonPath("$.isPass", anyOf(is(false),is(true))));
.andExpect(jsonPath("$.subjectList.name", anyOf(is("English"),is("Hindi")…)));
有时将 hamcrest 与 Junit 和一些模拟库一起使用可能会很棘手
见
How to use JUnit and Hamcrest together?
我正在练习 MockMVC 以进行剩余调用单元测试。我们如何测试布尔值,以便结果是真还是假我需要通过测试,我试过如下,
mockMvc.perform(get("/student/{Id}", 1L)).
.andExpect(status().isOk())
.andExpect(jsonPath("$.isPass", is(true || false)));
我还有一个包含 6 个值的列表,如何使用列表包含所有类型的方法,
.andExpect(jsonPath("$.subjectList", hasSize(5)))
.andExpect(jsonPath("$.subjectList.name", Matchers.contains("English", "Hindi", "France", "Tamil", "Bengali"))
有什么建议吗!!
我建议使用 hamcrest AnyOf 逻辑匹配器
表格 Tutorial :
anyOf - matches if any matchers match, short circuits (like Java ||)
所以在你的情况下:
import static org.hamcrest.core.AnyOf.*;
mockMvc.perform(get("/student/{Id}", 1L)).
.andExpect(status().isOk())
.andExpect(jsonPath("$.isPass", anyOf(is(false),is(true))));
.andExpect(jsonPath("$.subjectList.name", anyOf(is("English"),is("Hindi")…)));
有时将 hamcrest 与 Junit 和一些模拟库一起使用可能会很棘手 见
How to use JUnit and Hamcrest together?