期望一个方法永远不会用某些参数调用
Expect a method to be never called with certain arguments
在 PHPUnit 中,我如何测试某个方法是否从未使用某些参数调用?我的意思是它可以用任何其他参数调用多次,但不能用某个参数调用。
传递不应传递给该方法的参数,并断言如果您的方法抛出异常(它可能应该抛出异常)。
看起来无法使用标准方法,因此您可以使用回调来指定 return 值,并检查那里的参数(有点棘手但似乎有效):
$mock = $thi->getMockBuilder('MyClass')->getMock();
$mock->expects($this->any())
->method('myMethod')
->willReturnCallback(function() {
$args = func_get_args();
$disallowedArgs = [1, 'abc'];
$this->assertNotEquals($disallowedArgs, $args);
})
;
在 PHPUnit 中,我如何测试某个方法是否从未使用某些参数调用?我的意思是它可以用任何其他参数调用多次,但不能用某个参数调用。
传递不应传递给该方法的参数,并断言如果您的方法抛出异常(它可能应该抛出异常)。
看起来无法使用标准方法,因此您可以使用回调来指定 return 值,并检查那里的参数(有点棘手但似乎有效):
$mock = $thi->getMockBuilder('MyClass')->getMock();
$mock->expects($this->any())
->method('myMethod')
->willReturnCallback(function() {
$args = func_get_args();
$disallowedArgs = [1, 'abc'];
$this->assertNotEquals($disallowedArgs, $args);
})
;