json 데이터를 쉽게 처리할 수 있도록 표현식 제공
표현식 문법 : https://github.com/json-path/JsonPath
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.2.0</version>
</dependency>
starter-test
의존성 에 포함되어 있다.$.data.user[0].name
$['data']['user'][0]['name']
연산자 | 설명 |
---|---|
$ | 루트 노드로 모든 Path 표현식은 이 기호로 시작된다. |
@ | 처리되고 있는 현재 노드를 나타내고 필터 조건자에서 사용된다. |
* | 와일드카드로 모든 요소와 매칭이 된다 |
. | Dot 표현식의 자식노드 |
[start:end] | 배열 slice 연산자 |
[?()] | 필터 표현식으로 필터 조건자가 참인 경우에 매칭되는 모든 요소를 만을 처리한다 ex. book[?(@.price == 49.99)] |
@Test
@DisplayName("유저 조회 컨트롤러 테스트")
public void retrieveUser() throws Exception{
//given
given(userService.findUser(1L)).willReturn(new UserRep("홍길동","1234"));
//when
mvc.perform(
get("/api/retrieve/1")
.contentType(APPLICATION_JSON)
.accept(APPLICATION_JSON)
)
.andDo(print())
//then
//값이 같은지의 여부를 판단.
.andExpect(jsonPath("$.name").value("홍길동"))
.andExpect(jsonPath("$.password").value("1234"))
.andExpect(status().isOk());
}