Como faço para afirmar um Iterable contém elementos com uma determinada propriedade?
Suponha que eu queira testar um método com esta assinatura:
List<MyItem> getMyItems();
AssumirMyItem
é um Pojo que tem muitas propriedades, uma das quais é"name"
acessado viagetName()
.
Tudo o que me importo em verificar é que oList<MyItem>
ou qualquerIterable
contém doisMyItem
instâncias, cuja"name"
propriedades têm os valores"foo"
e"bar"
. Se quaisquer outras propriedades não corresponderem, eu realmente não me importo com os propósitos deste teste. Se os nomes coincidirem, é um teste bem sucedido.
Eu gostaria que fosse um one-liner, se possível. Aqui está alguma "pseudo-sintaxe" do tipo de coisa que eu gostaria de fazer.
assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"});
Hamcrest seria bom para esse tipo de coisa? Em caso afirmativo, qual seria exatamente a versão mais antiga da minha pseudo-sintaxe acima?