2016-10-13 6 views
0

Я пишу тест интеграции на микросервис 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())); 
    } 

Последние две строки утверждения терпят неудачу.

ответ

0

Для параметров в методе hasItems() удалите typecasting в "int" и пусть это будет String.

И путь должен быть как sessionQuestions [0] .rounds.sessionQuestionId