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
では、データベースから返された行が、私が望んでいた名前と一致する列を持っていることをテストする最もクリーンで簡潔な方法は何でしょうか? 1 つのリスト内の各名前が別のリストに存在することを反復して確認するループを作成することもできますが、for
もっと簡潔にしたいと考えていました。次の疑似コードのようなものがいいでしょう:
List<MyClass> typesGotten = ...;
["furniture", "audio equipment"].equals(typesGotten.map(type => type.getName()))