hamcrest "hasItem" 能得到几个匹配器吗?

can hamcrest "hasItem" get few matchers?

我看到了这个post

assertThat( myClass.getMyItems(), contains(
    hasProperty("foo", is("bar")), 
    hasProperty("name", is("bar"))
));

  assertThat(logsFromWaze, hasItem(
                hasProperty("foo", is("bar")),
                hasProperty("name", is("bar"))));

它是如何工作的?

难道 hasItem 不期望一个匹配器作为参数而不是匹配器列表吗?

没有接受可变参数的 hasItem 匹配器,但您可以通过 allOf 匹配器组合 hasProperty("foo", is("bar"))hasProperty("name", is("bar"))

assertThat(logsFromWaze, hasItem(
        allOf(
                hasProperty("foo", is("bar")),
                hasProperty("name", is("bar"))
        )
));

当对被检查的 Iterable 的单次传递产生至少一个与传递给 allOf 的所有匹配器相匹配的项目时,此测试将成功。