can hamcrest" hasItem"得到一些匹配者?

时间:2016-07-05 10:30:45

标签: java unit-testing hamcrest

我看到了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期望一个匹配器作为参数而不是匹配器列表?

1 个答案:

答案 0 :(得分:0)

没有hasItem匹配器接受varargs,但您可以通过hasProperty("foo", is("bar"))匹配器同时合并hasProperty("name", is("bar"))allOf

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

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