9
봄 mvc에서 JSON 문서 응답의 jsonPath를 사용하여 어설 션하는 방법을 알아내는 데 어려움이 있습니다. 아마이 특별한 시나리오를 위해 jsonPath를 사용하는 것보다 더 좋은 방법이있을 것입니다. 링크 배열에 "self"라는 rel 항목이 있고 "self"객체의 "href"속성에도 "/"와 같은 "href"속성이 있는지 확인하고 싶습니다. JSON 응답은 다음과 같습니다 : 나는과 rel 것을 볼 수있는배열 배열을 JSONPath 및 스프링 mvc로 지정
{
"links":[
{
"rel":[
"self"
],
"href":"/"
},
{
"rel":[
"next"
],
"href":"/1"
}
]
}
나는이 시도 [0] 자신을 가지고 있지만 링크의 배열 확인해 배열에 자기가 어디 있는지에 의존하지 선호 것 실제로 href가 링크에 있는지 테스트합니다. [rel] [self]는 "/"입니다. 아이디어가 있으십니까?
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(welcomeController).build();
}
@Test
public void givenRootUrl_thenReturnLinkToSelf() throws Exception {
mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
.andExpect(jsonPath("$.links[0].rel[0].", is("self")));
}
배열 색인을 하드 코딩하지 않고이 작업을 수행 할 수있는 방법이 있는지 알고 계십니까? –
Kevin, jsonpath에서 regexp를 사용할 수 있습니다. $ .links [? (@. rel = ~ /.*self/i)] 또는 이와 비슷한 것입니다. https://github.com/json-path/JsonPath에서 전체 설명서를 확인하십시오. –