Извините за это название, которое я стараюсь сделать как можно более ясным. Не стесняйтесь редактировать, чтобы направить его.Тестирование содержимого атрибута коллекции из коллекции объектов
Моя проблема заключается в том, что я хотел бы проверить содержание этой структуры и более специальным образом содержания объектов B и убедиться, что она соответствует определенным значениям A:
public class A {
String key;
List<B> bs;
}
И мои данные имеют эту форму
List<A> as = [
{
key : "KEY1",
bs: [
{val1:"val1", val2:"val2}
]
},
{
key : "KEY2",
bs: [
{val1:"val3", val2:"val4"},
{val1:"val5", val2:"val6"}
]
},
];
в контексте тестирования единицы с Mockito, я хотел бы быть в состоянии проверить эту структуру, не делая предварительно лечение, чтобы получить список B. Проверяя эту структуру, я хотел бы быть уверен, что есть два B для KEY2 и что первый B имеет val3 и val4, второй val5 и val6.
На данный момент мне нужно создать карту по ключу и проверить каждую запись. Я хотел бы сделать это более простым способом, если таковые существуют.
Вот мой фактический тест.
List<A> as = captor.getAllValues();
assertThat(as)
.isNotNull()
.hasSize(2)
.extracting("key")
.containsOnlyOnce(
tuple("KEY1"),
tuple("KEY2")
);
Map<String, A> estimationParPlateforme = indexBy(as, new Indexer<String, A>() {
@Override
public String apply(A a) {
return a.getKey();
}
});
assertThat(as.get("KEY1").getBs())
.isNotEmpty()
.extracting(
"val1",
"val2"
)
.containsExactly(
tuple(
"val1",
"val2"
)
);
assertThat(as.get("KEY2").getBs())
.isNotEmpty()
.extracting(
"val1",
"val2"
)
.containsExactly(
tuple(
"val3",
"val4"
),
tuple(
"val5",
"val6"
)
);
Я думаю, что это немного дольше для испытания, и я хотел бы найти способ улучшить это. У вас есть решение?
Спасибо за любую помощь
'assertThat (as) .extracting (" bs ")' и т. Д.? –