I am practicing MockMVC for rest call unit testing. how can we test the Boolean values so that whether the result is true or false I need to pass the test, I tried as follows,
mockMvc.perform(get("/student/{Id}", 1L)).
.andExpect(status().isOk())
.andExpect(jsonPath("$.isPass", is(true || false)));
Also I have list with 6 values, how can use list contains all kind of method,
.andExpect(jsonPath("$.subjectList", hasSize(5)))
.andExpect(jsonPath("$.subjectList.name", Matchers.contains("English", "Hindi", "France", "Tamil", "Bengali"))
Any suggestions please!!
I would suggest the use of hamcrest AnyOf logical matcher
Form the Tutorial :
anyOf - matches if any matchers match, short circuits (like Java ||)
So in your case:
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")…)));
Somtime the usage of hamcrest with Junit and some mock libs can be tricky see
How to use JUnit and Hamcrest together?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With