В тесте jUnit я хочу получить несколько строк из базы данных на основе столбца name
. Затем я хочу проверить, что строки, которые я получил, имеют ожидаемые имена. У меня есть следующее:
Set<MyClass> typesToGet = MyClassFactory.createInstances("furniture",
"audio equipment");
Collection<String> namesToGet = Collections2.transform(typesToGet,
new NameFunction<MyClass, String>());
List<MyClass> typesGotten = _svc.getAllByName(typesToGet);
assertThat(typesGotten.size(), is(typesToGet.size()));
Collection<String> namesGotten = Collections2.transform(typesGotten,
new NameFunction<ItemType, String>());
assertEquals(namesToGet, namesGotten); // fails here
В настоящее время я получаю этот сбой:
java.lang.AssertionError :ожидаемый :com.google.common.collect.Collections2$TransformedCollection<[аудиооборудование, мебель]> но был :com.google.common.collect.Collections2$TransformedCollection<[аудиооборудование, мебель]>
Итак, какой самый чистый и краткий способ проверить, что я получил строки из базы данных, столбец name
которых соответствует именам, которые я сказал, что хочу? У меня мог бы быть цикл for
, перебирающий и проверяющий, что каждое имя в одном списке существует в другом, но я надеялся быть более кратким. Что-то вроде следующего псевдокода было бы неплохо:
List<MyClass> typesGotten =...;
["furniture", "audio equipment"].equals(typesGotten.map(type => type.getName()))