[SPRING] spring-test-mvc jsonpath를 사용하여 테스트가 null을 반환합니다.
SPRINGspring-test-mvc jsonpath를 사용하여 테스트가 null을 반환합니다.
나는 Spring의 "spring-test-mvc"라이브러리를 사용하여 웹 컨트롤러를 테스트하고있다. JSON 배열을 반환하는 매우 간단한 컨트롤러가 있습니다. 그렇다면 내 시험에서 나는있다 :
@Test
public void shouldGetAllUsersAsJson() throws Exception {
mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
.andExpect(content().mimeType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("fName").exists());
}
위의 테스트는 다음을 반환합니다.
java.lang.AssertionError: No value for JSON path: fName
내가 실제로 얻은 것을 빠르게 확인하기 위해 나는 아래의 테스트를 실행했다.
@Test
public void shouldPrintResults() throws Exception {
mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
.andDo(print());
}
그리고 MockHttpServletResponse의 본문에 올바른 JSON 배열을 반환합니다.
jsonPath가 JSON 배열에서 fName을 볼 수없는 이유가 확실하지 않습니다.
해결법
-
==============================
1.json 경로 종속성을 maven에 추가하거나 jar를 lib에 추가하면 작동합니다. Spring이 최신 Spring 3.2.0 RC1 릴리스에서 jsonPath 종속성을 포함하지 않는다고 생각합니다. 나는 이것이 Spring-Test-MVC 독립형 프로젝트에서도 동일하다고 생각한다.
json 경로 종속성을 maven에 추가하거나 jar를 lib에 추가하면 작동합니다. Spring이 최신 Spring 3.2.0 RC1 릴리스에서 jsonPath 종속성을 포함하지 않는다고 생각합니다. 나는 이것이 Spring-Test-MVC 독립형 프로젝트에서도 동일하다고 생각한다.
다음은 Maven에 대한 종속성입니다.
<dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>0.8.1</version> <scope>test</scope> </dependency>
jsonPath ( "$. test"). value ( "test")를 사용하려면 hamcrest 라이브러리가 필요할 수도 있습니다.
<dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>1.3</version> <scope>test</scope> </dependency>
-
==============================
2.귀하의 json 대응 본문은 어떻게 생겼습니까? 당신은 .andDo (print ())를 사용하여 그것을 볼 수 있습니다.
귀하의 json 대응 본문은 어떻게 생겼습니까? 당신은 .andDo (print ())를 사용하여 그것을 볼 수 있습니다.
jsonPath ( "$. fName")를 사용해보십시오.
이것은 json 응답이 다음과 같다고 가정합니다. { "fName": "이름"}
응답이 배열이면 다음과 같은 응답을 위해 jsonPath ( "$ [0] .fName")가 필요합니다. [{ ""fName ":"이름 "}, {"fName ":"이름 2 "}]
http://goessner.net/articles/JsonPath/에서 더 많은 예제를 볼 수 있습니다.
from https://stackoverflow.com/questions/13362372/testing-with-spring-test-mvc-jsonpath-returns-null by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring을 사용하여 websocket을 통해 클라이언트에게 메시지를 보내는 방법 (0) | 2019.04.12 |
---|---|
[SPRING] 스프링 부트 컨트롤러 404 (0) | 2019.04.12 |
[SPRING] 스프링 통합 유닛 테스트 아웃 바운드 채널 어댑터 (0) | 2019.04.12 |
[SPRING] 예제 봄 데이터 별 쿼리 (0) | 2019.04.12 |
[SPRING] Spring 부트 관리 로그의 AsyncRequestTimeoutException 반복 (0) | 2019.04.11 |