Я пишу тест интеграции на микросервис SpringBoot, написанный мной. При реализации утверждения для вложенного элемента массива JSON у меня возникла проблема. Например, моя полезная нагрузка для ответа следующая.Тест интеграции с SpringBoot Утверждение вложенных элементов массива с использованием Rest Assured и Hamcrest
{
"sessionQuestions": [
{
"id": 2,
"sessionId": 1,
"questionId": "1002",
"rounds": [
{
"id": 2,
"sessionQuestionId": 2
}
],
"status": "DELIVER"
},
{
"id": 1,
"sessionId": 1,
"questionId": "1004",
"rounds": [
{
"id": 1,
"sessionQuestionId": 1
}
],
"status": "DELIVER"
}
]
}
Теперь я хочу утверждать массив вложенных раундов для значений id и sessionQuestionId. Но я не мог найти способ сделать это после поиска несколько раз. Кто-нибудь знает как это сделать? Любая помощь приветствуется.
Мое утверждение гласит следующее.
@Test
public void testGetLatestSession() {
given().when().get(SESSIONS_RESOURCE).then().statusCode(HttpStatus.SC_OK)
.body("id", is((int) sessionTwo.getId())).body("status", is(SessionStatus.STARTED.name()))
.body("sessionQuestions.findall.size()", equalTo(2))
.body("sessionQuestions.id",
hasItems((int) sessionQuestionOne.getId(), (int) sessionQuestionTwo.getId()))
.body("sessionQuestions.sessionId", hasItems((int) sessionTwo.getId(), (int) sessionTwo.getId()))
.body("sessionQuestions.questionId", hasItems("1002", "1004"))
.body("sessionQuestions.status",
hasItems(SessionQuestionStatus.DELIVER.name(), SessionQuestionStatus.DELIVER.name()))
.body("sessionQuestions.rounds.findall.size()", equalTo(2))
.body("sessionQuestions.rounds.id", hasItems((int) roundOne.getId(), (int) roundTwo.getId()))
.body("sessionQuestions.rounds.sessionQuestionId", hasItems((int)sessionQuestionOne.getId(), (int) sessionQuestionTwo.getId()));
}
Последние две строки утверждения терпят неудачу.