Spring Boot 如何使用Spring的MockMvc和jsonpath测试不等式?

bxgwgixi  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(136)

我尝试测试响应中的字段是否等于某个值,如下所示:

@Test
void whenAnAuth0ExceptionIsThrown_itShouldNotLeakInformation() throws Exception {
    String description = "Resource not found.";
    Auth0Exception auth0Exception = new Auth0Exception(description);

    when(usersService.getRoles()).thenThrow(new UnrecoverableAuthException("api exception", auth0Exception));

    mockMvc.perform(get("/v1/users/roles").with(csrf()))
        .andExpect(status().isInternalServerError())
        .andExpect(jsonPath("$.errorMessage").value(AdditionalMatchers.not(description)));

    verify(usersService).getRoles();
}

但当我尝试这样做时,我得到以下错误:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
No matchers found for additional matcher Not(?)

我发现的一个解决方法是使用andReturn(),然后测试MvcResult

sr4lhrrt

sr4lhrrt1#

你很接近了。

import static org.hamcrest.Matchers.not;
... 
.andExpect(jsonPath("$.errorMessage").value(not(description)));

相关问题