Утверждение массива массивов с JSONPath и spring mvc

мне трудно понять, как утверждать с помощью jsonPath в ответе документа JSON в spring mvc. Возможно, есть лучший способ сделать это, чем использовать jsonPath для этого конкретного сценария. Я хотел бы проверить, что массив ссылок имеет элемент rel " self "и что атрибут" href "объекта" self "также имеет атрибут" href", который равен"/". Ответ JSON выглядит следующим образом:

 {  
   "links":[  
      {  
         "rel":[  
            "self"
         ],
         "href":"/"
      },
      {  
         "rel":[  
            "next"
         ],
         "href":"/1"
      }
   ]
}

я попробовал это, где я вижу, что он имеет rel [0] имеет self, но я бы предпочел не полагаться на то, где в массиве ссылок и массиве rel есть self, и фактически проверить, что такое href в links[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")));
  }

1 ответов


Как насчет добавления нескольких andExpect методами? Что-то похожее на:

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