Hamcrest 集合断言将多个 hasProperty 合并为一个
Hamcrest collection assertions merge several hasProperty in one
实际上我正在测试一个集合中的一个项目,它包含一个 属性 key equalTo("key")
并且有一个 属性 value equalTo("value")
,用两个句子表示:
assertThat(categorizedFuaDto.getMetainfos(), contains(hasProperty("key", equalTo(receivedMetaInfoValue.getKey()))));
assertThat(categorizedFuaDto.getMetainfos(), contains(hasProperty("value", equalTo(receivedMetaInfoValue.getValue()))));
是否可以将它们合二为一?
您可以尝试类似的方法:
assertThat(
categorizedFuaDto.getMetainfos(), hasItems(Matchers.<YourClass>
hasProperty("key", equalTo(receivedMetaInfoValue.getKey())),
hasProperty("value", equalTo(receivedMetaInfoValue.getValue()))
)
);
什么地方 class 输入这个方法 returns returns: categorizedFuaDto.getMetainfos()
示例见此处:
但我不确定这对您的问题有何好处。最好让您的测试尽可能简单易读。
如果您想确保 (您的 collection 的)同一项 同时满足两个条件 ,您最好将它们与 AllOf 匹配器组合在一个匹配器中:
assertThat(categorizedFuaDto.getMetainfos(),
hasItem(allOf(hasProperty("key", equalTo(receivedMetaInfoValue.getKey())),
hasProperty("value", equalTo(receivedMetaInfoValue.getValue())))));
实际上我正在测试一个集合中的一个项目,它包含一个 属性 key equalTo("key")
并且有一个 属性 value equalTo("value")
,用两个句子表示:
assertThat(categorizedFuaDto.getMetainfos(), contains(hasProperty("key", equalTo(receivedMetaInfoValue.getKey()))));
assertThat(categorizedFuaDto.getMetainfos(), contains(hasProperty("value", equalTo(receivedMetaInfoValue.getValue()))));
是否可以将它们合二为一?
您可以尝试类似的方法:
assertThat(
categorizedFuaDto.getMetainfos(), hasItems(Matchers.<YourClass>
hasProperty("key", equalTo(receivedMetaInfoValue.getKey())),
hasProperty("value", equalTo(receivedMetaInfoValue.getValue()))
)
);
什么地方 class 输入这个方法 returns returns: categorizedFuaDto.getMetainfos()
示例见此处:
但我不确定这对您的问题有何好处。最好让您的测试尽可能简单易读。
如果您想确保 (您的 collection 的)同一项 同时满足两个条件 ,您最好将它们与 AllOf 匹配器组合在一个匹配器中:
assertThat(categorizedFuaDto.getMetainfos(),
hasItem(allOf(hasProperty("key", equalTo(receivedMetaInfoValue.getKey())),
hasProperty("value", equalTo(receivedMetaInfoValue.getValue())))));