Hamcrest匹配器的多个hasProperty约束

时间:2016-02-05 06:09:13

标签: java junit hamcrest

我尝试了以下代码,用于匹配List

中的单个ComplexObject
  {
  "query": {
    "terms": {
       "field_name": [
          "VALUE1",
          "VALUE2"
       ]
     }
   }
}

我想要一个

的过滤器

assertThat(complexObjectList, Matchers.<ComplexObject>hasItems( hasProperty("lang", equalTo(lang)), hasProperty("name", equalTo(name)), hasProperty("desc", equalTo(desc)));

但是使用上面的代码,我得到了

match(lang) && match(name) && match(desc)

如何验证这三种不同的match(lang) || match(name) || match(desc)匹配器?

1 个答案:

答案 0 :(得分:10)

您可以使用allOf匹配器。

assertThat(complexObjectList,
  Matchers.<ComplexObject>hasItem(allOf(
    hasProperty("lang", equalTo(lang)),
    hasProperty("name", equalTo(name)),
    hasProperty("desc", equalTo(desc))));