Условие JsonPath ИЛИ с использованием 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"))

Любые предложения, пожалуйста!


person Vinod    schedule 23.11.2015    source источник
comment
Я предполагаю, что ваш код просто пропускает вызов метода: ... .andExpect(jsonPath("$.isPass", is(true || false)).exists());   -  person schrieveslaach    schedule 23.11.2015
comment
Я попробовал ваше предложение. Это не работает для меня   -  person Vinod    schedule 30.11.2015
comment
Какую ошибку вы получаете?   -  person reos    schedule 30.11.2015
comment
Вы можете предоставить студенческий класс   -  person Haim Raman    schedule 01.12.2015


Ответы (1)


Я бы предложил использовать логический сопоставитель hamcrest AnyOf

Сформируйте учебник:

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")…)));

Иногда использование hamcrest с Junit и некоторыми фиктивными библиотеками может быть сложным.

Как использовать JUnit и Hamcrest вместе?

person Haim Raman    schedule 01.12.2015