Si supponga che voglio unit test un metodo con questa firma:Come posso affermare che Iterable contenga elementi con una certa proprietà?
List<MyItem> getMyItems();
supponga MyItem
è un POJO che ha molte proprietà, uno dei quali è "name"
, accessibile tramite getName()
.
Tutto mi interessa verificare è che il List<MyItem>
, o qualsiasi Iterable
, contiene due MyItem
casi, le cui proprietà "name"
hanno i valori "foo"
e "bar"
. Se altre proprietà non corrispondono, non mi interessa per gli scopi di questo test. Se i nomi corrispondono, è un test riuscito.
Mi piacerebbe che fosse un liner, se possibile. Ecco alcune "pseudo-sintassi" del tipo di cosa che vorrei fare.
assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"});
Hamcrest sarebbe buono per questo tipo di cose? In tal caso, quale sarebbe esattamente la versione hamcrest della mia pseudo-sintassi sopra?
proprio come un nodo laterale - questa è una soluzione hamcrest (non assertj) – Hartmut