สมมติว่าฉันต้องการทดสอบหน่วยวิธีด้วยลายเซ็นนี้:
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 จะดีสำหรับสิ่งประเภทนี้หรือไม่? ถ้าเป็นเช่นนั้นไวยากรณ์หลอกของฉันจะเป็นอย่างไร