'Spring MVC 5 ResultMatcher jsonPath null value
After upgrading my rest service from Spring Boot 1.5.10 to 2.0.0 I encountered my tests failing which passed before.
Following Scenario:
import org.mockito.internal.matchers.Null;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
...
.andExpect(jsonPath("img").value(Null.NULL))
Fails now in Spring MVC 5 with following message:
java.lang.AssertionError: JSON path "img"
Expected :isNull() Actual :null
What is the correct way in Spring MVC 5 to assert that the value of the jsonPath
is null
?
Solution 1:[1]
Answering my own question as I found the solution by myself.
You have to use the correct Matcher, in my case org.hamcrest.core.IsNull
So I had to change to
import org.hamcrest.core.IsNull;
...
andExpect(jsonPath("img").value(IsNull.nullValue()))
Solution 2:[2]
You can use content().srtring(Matcher matcher) and then use IsEmptyString matcher
result.andDo(print())
.andExpect(status().isNoContent())
.andExpect(content().string(IsEmptyString.isEmptyOrNullString()));
Solution 3:[3]
April 2022, Hamcrest 2.2
nullValue() is a standalone static method importable by org.hamcrest.CoreMatchers.nullValue
.
So, updated solution resolves to
static import org.hamcrest.core.nullValue;
...
andExpect(jsonPath("img").value(nullValue()))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | mrkernelpanic |
Solution 2 | barrenaedu |
Solution 3 |