假設欲單元測試與此簽名的方法:如何聲明一個Iterable包含具有某個屬性的元素?
List<MyItem> getMyItems();
MyItem
假設是具有許多屬性一個POJO,其中之一是"name"
,經由getName()
訪問。
。我只關心確認的是,List<MyItem>
,或任何Iterable
,包含兩個MyItem
情況下,其"name"
屬性有值"foo"
和"bar"
。如果任何其他屬性不匹配,我並不真正關心此測試的目的。如果名字匹配,這是一個成功的測試。
如果可能,我希望它是一行代碼。這是我想要做的事情的一些「僞語法」。
assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"});
Hamcrest會對這類事情有好處嗎?如果是這樣,那麼我的僞語法的最後一個版本是什麼?
就像一個邊節點 - 這是一個hamcrest解決方案(不assertj) – Hartmut