Ответ 1
Как добавить несколько методов иExpect? Нечто похожее на:
mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
.andExpect(jsonPath("$.links[0].rel[0]", is("self")))
.andExpect(jsonPath("$.links[0].href[0]", is("/"));
Мне трудно понять, как утверждать с помощью jsonPath в ответе на документ JSON в spring mvc. Возможно, есть лучший способ сделать это, чем использовать jsonPath для этого конкретного сценария. Я хотел бы подтвердить, что массив ссылок имеет элемент rel "self" и что атрибут "href" объекта "self" также имеет атрибут "href", который равен "/". Ответ JSON выглядит следующим образом:
{
"links":[
{
"rel":[
"self"
],
"href":"/"
},
{
"rel":[
"next"
],
"href":"/1"
}
]
}
Я пробовал это, когда вижу, что у него rel [0] есть сам, но я бы предпочел не полагаться на то, где в массиве ссылок и rel массиве я сам и на самом деле проверяю, что это за 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")));
}
Как добавить несколько методов иExpect? Нечто похожее на:
mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
.andExpect(jsonPath("$.links[0].rel[0]", is("self")))
.andExpect(jsonPath("$.links[0].href[0]", is("/"));
Принятый ответ выглядит хорошо для меня. Но я не знаком с junit4. Поэтому я добавлю здесь, как я бы тестировал типичный сценарий с использованием Junit5.
mockMvc.perform(get("/"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.links", hasSize(2)))
.andExpect(jsonPath("$.links[0].rel[0]")
.value("self"))
.andExpect(jsonPath("$.links[0].href[0]")
.value("/"))
Здесь я добавлю статический импорт (в случае новичка), потому что, когда я впервые работал над ним, мне нужно было определить, какой импорт выполняется в рамках нескольких импортов.
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static org.hamcrest.Matchers.hasSize;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
Надеюсь, что это полезно для кого-то. особенно кто-то новичок в модульном тестировании :)