加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPUnit“with”matcher with array和$this-> anything()

发布时间:2020-12-13 16:55:13 所属栏目:PHP教程 来源:网络整理
导读:我有一个单元测试测试PDOStatement :: execute()调用date()作为数组元素之一. 就像是: $stmt-execute(array ('value1','value2',date('Ymd')); 问题是我的断言是使用$this- anything()来表示日期函数结果.我认为它正在打破,因为它在阵列中.有没有一个好方法
我有一个单元测试测试PDOStatement :: execute()调用date()作为数组元素之一.

就像是:

$stmt->execute(array ('value1','value2',date('Ymd'));

问题是我的断言是使用$this-> anything()来表示日期函数结果.我认为它正在打破,因为它在阵列中.有没有一个好方法来处理这个?

我的断言看起来像:

$mock->expects($this->once())
  ->method('execute')
  ->with(array ('value1',$this->anything()));

解决方法

您不能将参数验证方法传递给数组中的with(). PHPUnit需要迭代数组并检测方法.相反,其中一个方法将传递给方法应接收的每个参数的with()方法.

在您的情况下,该方法将收到一个参数,因此您将使用单个验证.您不能使用通用验证,因此您将使用回调检查阵列内部:

$mock->expects($this->once())
     ->method('execute')
     ->with($this->callback(function($array) {
            return 'value1' == $array[0] && 'value2' == $array[1] && 3 == count($array);
        }));

这在PHPUnit docs中有解释.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读