Mam trudności z ustaleniem, jak z pomocą jsonPath wywołać odpowiedź z dokumentu JSON w wiosennym pliku mvc. Być może jest lepszy sposób osiągnięcia tego niż użycie jsonPath dla tego konkretnego scenariusza. Chciałbym potwierdzić, że tablica links ma element rel "self", a atrybut "href" obiektu "self" ma również atrybut "href", który jest równy "/". Odpowiedź JSON wygląda następująco:Wstawianie tablic z JSONPath i sprężyną mvc
{
"links":[
{
"rel":[
"self"
],
"href":"/"
},
{
"rel":[
"next"
],
"href":"/1"
}
]
}
Próbowałem to gdzie mogę zobaczyć, że ma rel [0] ma własny, ale wolałbym, aby nie polegać na którym w tablicy linki i tablicy rel jaźń jest i faktycznie sprawdź, co to href jest w linkach [rel] [self] to "/". Jakieś pomysły?
@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")));
}
Wiesz, czy istnieje sposób, aby to zrobić bez hardcoding indeksy tablicy (w przypadku kolejność jest inna)? –
Kevin, możesz użyć wyrażenia regularnego w swojej ścieżce jsonpath, np. $ .links [? (@. Rel = ~ /.*self/i)] lub coś w tym stylu. Proszę sprawdzić pełną dokumentację tutaj: https://github.com/json-path/JsonPath –