【问题标题】:How to test a second parameter in a PHPUnit mock object如何测试 PHPUnit 模拟对象中的第二个参数
【发布时间】:2010-09-23 14:43:01
【问题描述】:

这就是我所拥有的:

$observer = $this->getMock('SomeObserverClass', array('method'));
$observer->expects($this->once())
         ->method('method')
         ->with($this->equalTo($arg1));

但是这个方法应该有两个参数。我只是在测试第一个参数是否正确传递(作为 $arg1)。

如何测试第二个参数?

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

    我相信这样做的方法是:

    $observer->expects($this->once())
         ->method('method')
         ->with($this->equalTo($arg1),$this->equalTo($arg2));
    

    或者

    $observer->expects($this->once())
         ->method('method')
         ->with($arg1, $arg2);
    

    如果您需要对第二个参数执行不同类型的断言,您也可以这样做:

    $observer->expects($this->once())
         ->method('method')
         ->with($this->equalTo($arg1),$this->stringContains('some_string'));
    

    如果您需要确保某个参数传递多个断言,请使用logicalAnd()

    $observer->expects($this->once())
         ->method('method')
         ->with($this->logicalAnd($this->stringContains('a'), $this->stringContains('b')));
    

    【讨论】:

    • 几周前我遇到了这个问题。使用: ->with($this->equalTo($foo, $bar) 为我工作。
    • @ieure equalTo() 的第二个参数是 $delta,所以它可能不会像你想象的那样。
    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2020-06-08
    • 2017-03-24
    相关资源
    最近更新 更多