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中有解释. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |