Hamcrest集合断言合并了几个hasProperty

时间:2015-10-15 14:44:52

标签: java hamcrest

实际上,我正在测试一个集合的项目,其中包含一个属性key equalTo("key"),并且有两个句子中的属性value equalTo("value")

assertThat(categorizedFuaDto.getMetainfos(), contains(hasProperty("key", equalTo(receivedMetaInfoValue.getKey()))));
assertThat(categorizedFuaDto.getMetainfos(), contains(hasProperty("value", equalTo(receivedMetaInfoValue.getValue()))));

是否可以将它们合并为一个?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

assertThat(
    categorizedFuaDto.getMetainfos(), hasItems(Matchers.<YourClass>
        hasProperty("key", equalTo(receivedMetaInfoValue.getKey())),
        hasProperty("value", equalTo(receivedMetaInfoValue.getValue()))
    )
);

此方法返回的任何类型类型返回:categorizedFuaDto.getMetainfos()

请点击此处查看示例:https://stackoverflow.com/a/33123568/3899529

但我不确定这会给你带来什么好处。让测试尽可能简单易读是件好事。

答案 1 :(得分:0)

如果您想确保同一项(您的收藏品)同时满足两个条件,您最好将它们合并到一个匹配器中 AllOf 匹配器:

assertThat(categorizedFuaDto.getMetainfos(),
        hasItem(allOf(hasProperty("key", equalTo(receivedMetaInfoValue.getKey())), 
                        hasProperty("value", equalTo(receivedMetaInfoValue.getValue())))));