在Junit5中,我经常使用以下代码段来测试集合是否包含满足特定条件的元素:
assertThat("The list of addresses", addresses.getAddressReferences(), containsInAnyOrder(
allOf(
hasProperty("id", is("abc")),
hasProperty("role", is(SENDER))
),
allOf(
hasProperty("id", is("def")),
hasProperty("role", is(RECEIVER))
)
));
我还没有找到一种在kotest中表达这个意思的方式。我尝试了shouldContainExactlyInAnyOrder
等方法,但它们都期望一个实际的对象。我不知道如何表达我想要对每个元素使用不同的匹配器进行测试。
我还查看了检查器,这可能是解决方案,但它们似乎只能帮助对列表中的所有元素进行断言。
it.property shouldBe
周围添加嵌套的withClue调用来修复它,但这会使代码有点臃肿。 - Klitos Kyriacou