2014-09-02 1 views
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"))); 
    } 

답변

9

어떻게 여러 andExpect 방법을 추가하는 방법에 대한? 비슷한 것 :

mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk()) 
    .andExpect(jsonPath("$.links[0].rel[0]", is("self"))) 
    .andExpect(jsonPath("$.links[0].href[0]", is("/")); 
+0

배열 색인을 하드 코딩하지 않고이 작업을 수행 할 수있는 방법이 있는지 알고 계십니까? –

+0

Kevin, jsonpath에서 regexp를 사용할 수 있습니다. $ .links [? (@. rel = ~ /.*self/i)] 또는 이와 비슷한 것입니다. https://github.com/json-path/JsonPath에서 전체 설명서를 확인하십시오. –

관련 문제