期望永远不会使用某些参数调用方法

时间:2016-09-28 06:59:58

标签: php phpunit

在PHPUnit中,我如何测试是否从未使用某些参数调用方法?我的意思是它可以用任何其他参数调用,甚至多次,但从不使用某个参数。

2 个答案:

答案 0 :(得分:1)

看起来不可能使用标准方式,因此您可以使用回调来指定返回值,并检查那里的参数(有点棘手,但似乎有效):

$mock = $thi->getMockBuilder('MyClass')->getMock();
$mock->expects($this->any())
     ->method('myMethod')
     ->willReturnCallback(function() {
        $args = func_get_args();
        $disallowedArgs = [1, 'abc'];
        $this->assertNotEquals($disallowedArgs, $args);
    })
;

答案 1 :(得分:0)

传递不应该传递给方法的参数,如果你的方法抛出一个(它可能应该),则断言期望异常。

https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.exceptions.examples.ExceptionTest.php