phpunit里面的任何matcher数组

时间:2016-09-05 06:01:53

标签: php symfony testing phpunit matcher

我有一个函数,在处理它们之后返回一个记录数组数组。预期的返回值看起来像这样 -

[
  [....]
  ['Name', 'Quantity', 'Tags', 'Price', 'Total', 'Autogenerated Value']
  [....]
  [....]
]

字段Autogenerate Value可以是动态生成的任何内容。

目前我正在尝试使用assertEquals方法,但每次自动生成值都会有所不同。这是匹配器,我可以在这里使用anything()

我真的不想编写自己的断言函数迭代预期值并使用assertArraySubset断言

2 个答案:

答案 0 :(得分:0)

这还不可能,但你可以扩展PHPUnit来评估数组中的约束:

  • 编写一个像这样的自定义{{ 1288323623006 | date:'short'}} 实现

    {{ 1288323623006 | date:'d/M/yy h:mm:ss a' }}
    
  • 使用以下命令在引导程序文件中添加比较器:

    Comparator

现在,PHPUnit应该评估约束,而不是在它们发生的任何地方进行比较。

答案 1 :(得分:0)

  

我真的不想编写自己的断言函数迭代预期值并使用assertArraySubset断言

但为什么不呢?

如果您不想在日志中使用大量断言,则可以将断言方法限制为抛出PHPUnit_Framework_ExpectationFailedException,以防出现任何错误(即,如果数组的常量部分不存在或者最后一个,具有精确问题元素内容的动态生成元素不具有预期值。