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()));
}
最後の2行のアサーションが失敗しています。