如何用KoTest实现AssertJ中satisfiesAnyOf的等效效果?
在KoTest中实现AssertJ的
satisfiesAnyOf断言效果 KoTest确实存在支持“任一内部断言成功即通过”的元断言,核心实现方法是shouldSatisfyAny,可以直接匹配你需要的效果。
对应你给出的AssertJ代码,KoTest的实现方式有以下几种:
写法一:结合lambda块的shouldSatisfyAny
list shouldSatisfyAny { it should contain(Tags.SWEETS, Tags.HIGH) } and { it should contain(Tags.SOUPS, Tags.RED) }
写法二:直接传递多断言函数参数
list shouldSatisfyAny( { it should contain(Tags.SWEETS, Tags.HIGH) }, { it should contain(Tags.SOUPS, Tags.RED) } )
写法三:链式assertThat风格(贴近AssertJ写法)
如果偏好和AssertJ一致的链式调用,也可以用or组合断言条件:
assertThat(list).contains(Tags.SWEETS, Tags.HIGH) or { contains(Tags.SOUPS, Tags.RED) }
以上三种写法都能实现“只要任一内部断言成立,整个测试断言就通过”的效果,和AssertJ的satisfiesAnyOf功能完全匹配。
内容的提问来源于stack exchange,提问作者Kirill
相关产品推荐
相关产品推荐

