使用MockMVC的JsonPath OR条件

时间:2015-11-23 10:47:04

标签: spring junit jsonpath mockmvc spring-rest

我正在练习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"))

请提出任何建议!!

1 个答案:

答案 0 :(得分:3)

我建议使用hamcrest AnyOf逻辑匹配器

形成Tutorial

  

anyOf - 匹配任何匹配器匹配,短路(如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")…)));

使用Junit和一些模拟库来使用hamcrest可能会很棘手 见

How to use JUnit and Hamcrest together?