简体   繁体   English

hamcrest“ hasItem”能否获得很少的匹配者?

[英]can hamcrest “hasItem” get few matchers?

I saw this post 我看到了这个帖子

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

and

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

how can it work? 如何运作?

doesn't hasItem expect one matcher as an argument and not a list of matchers? hasItem是否不希望将一个匹配器作为参数而不是匹配器列表?

There is no hasItem matcher that accepts varargs, but you can combine both hasProperty("foo", is("bar")) and hasProperty("name", is("bar")) via allOf matcher: 没有hasItem接受可变参数匹配,但你可以结合两种hasProperty("foo", is("bar"))hasProperty("name", is("bar"))通过allOf匹配:

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

This test will succeed when a single pass over the examined Iterable yields at least one item that matches all of the matchers passed to allOf . 单次通过检查的Iterable时,如果通过至少一个与传递给allOf所有匹配项匹配的项,则此测试将成功。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM