JUnit Assert, Сопоставители и вложенные объекты
У меня есть следующая коллекция:
Set<DecisionGroup> parentDecisionGroups
прежде всего в моем тесте мне нужно проверить, что эта коллекция содержит два объекта с заданными идентификаторами:
assertThat(parentDecisionGroups, hasItem(hasProperty("id", equalTo(decisionGroup1.getId()))));
assertThat(parentDecisionGroups, hasItem(hasProperty("id", equalTo(decisionGroup2.getId()))));
Все идет нормально...
Сейчас мне нужно проверить это parentDecisionGroups.get(0).getOwnerDecision()
(где parentDecisionGroup.id == solutionGroup1.getId()) равно decision1
а также parentDecisionGroups.get(1).getOwnerDecision()
(где parentDecisionGroup.id == solutionGroup2.getId()) равно decision2
как это сделать с org.hamcrest.*
а также org.junit.Assert.*
?
1 ответ
Решение
Вы можете использовать CombinableMatcher
в both(matcher1).and(matcher2)
спички.
Таким образом, вы получите что-то вроде:
assertThat(parentDecisionGroups, hasItem(
both(hasProperty("id", equalTo(decisionGroup1.getId()))).
and(hasProperty("ownerDecision", equalTo("decision1"))));