Shazamcrest 自定义匹配 collections

Shazamcrest custom matching with collections

使用 Shazamcrest 可以通过提供字段路径和随后应用于该字段的匹配器来进行自定义匹配。

例如[cf]

assertThat(
  actualPerson,
  sameBeanAs(expectedPerson).with("address.streetName", startsWith("Via"));

如果你要匹配 collection,你如何做同样的事情?您可以为 collection 中的每个 object 应用自定义匹配器吗? collection?

中的所有 object

假设 Shazamcrest 匹配器像常规 Hamcrest 匹配器一样工作,您应该能够将它们与所有内置的集合匹配器一起使用。

assertThat(
  people,
  contains(
    sameBeanAs(expectedPerson).with("address.streetName", startsWith("Via")
  )
);

文档说您必须使用包中的自定义 assertThat。虽然这只是针对故障描述,但它可能会干扰某些匹配器的使用。