我试图断言一个数组至少包含一个与预期正则表达式匹配的元素,并且我试图以尽可能按书本和最少重新发明轮子的方式来做到这一点。
理想情况下,我想要
->assertThat($actualArray, $someConstraintObject)
,其中 $someConstraintObject
是执行 RightThing™ 的 PHPUnit\Framework\Constraint\Constraint
实例,并且仅由 PHPUnit 附带的约束组成,而无需编写新的约束类。
我认为不可能起作用的一件事:由
LogicalOr
约束组成的 RegularExpression
约束。为什么行不通?因为RegularExpression
约束无法“绑定”期望值;它只能被评估为预期值,而且我仍然无法使用“或”逻辑将数组中的值“传播”到该约束上。一组 LogicalOr
允许我根据多个正则表达式检查一个实际值,但不允许我根据一个正则表达式检查多个实际值。我该怎么办?
我认为最干净的方法是扩展 TraversableContains 并做一些类似于它的其他子类的事情。