作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数,它在处理完记录后返回一个记录数组。预期的返回值看起来像这样 -
[
[....]
['Name', 'Quantity', 'Tags', 'Price', 'Total', 'Autogenerated Value']
[....]
[....]
]
Autogenerate Value
字段可以是动态生成的任何内容。
目前我正在尝试使用assertEquals
方法,但每次自动生成的值都会不同。我可以在这里使用类似 anything()
的匹配器吗?
我真的不想编写自己的断言函数来迭代预期值并使用 assertArraySubset
断言
最佳答案
这还不可能,但您可以扩展 PHPUnit 来评估数组中的约束:
像这样编写一个自定义的比较器
实现
class ConstraintComparator extends SebastianBergmann\Comparator
{
public function accepts($expected, $actual)
{
return $expected instanceof \PHPUnit_Framework_Constraint;
}
public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
{
$expected->evaluate($actual);
}
在您的 Bootstrap 文件中添加比较器:
SebastianBergmann\Comparator\Factory::getInstance()->register(new ConstraintComparator);
现在 PHPUnit 应该评估约束,而不是在它们出现的任何地方进行比较。
关于phpunit 数组中的任何匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324680/
我是一名优秀的程序员,十分优秀!