我有以下场景,我想测试someFunction():
Collection<MyObject> objects = someFunction(someInput);
assertThat(objects , contains(hasProperty("property", is(propertyIWantToTest))));
如果根据传递给Collection<MyObject> objects
的{{1}} MyObject object
应该只有1 someInput
,则此方法可以正常工作。
但是,在someFunction()
的某些情况下someInput
应该有2个或更多Collection<MyObject> objects
包含相同的MyObject object
对象。
有没有办法使用Hamcrest匹配器来测试它?
这里有一些更接近我愿意实现的目标:
propertyIWantToTest
答案 0 :(得分:2)
如果您想验证每件商品是否包含该商品,并且确实只有两件商品,请使用everyItem
和hasSize
:
assertThat(objects, everyItem(hasProperty("property", is(propertyIWantToTest))));
assertThat(objects, hasSize(2));
如果您想要专门测试集合的内容,但恰好两个预期的项目都相同,请使用变量并containsInAnyOrder
:
Matcher<MyObject> m = hasProperty("property", is(propertyIWantToTest));
assertThat(objects, containsInAnyOrder(m, m));