2008-11-22 71 views
53

第二个参数,这是我有:如何测试在PHPUnit的mock对象

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

但这种方法应该采取两个参数。我只测试第一个参数是否正确传递(如$ arg1)。

如何测试第二个参数?

回答

85

我认为要做到这一点的方法是:

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

或者

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

如果您需要在第二个ARG执行不同类型的断言,你能做到这一点,太:

$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'))); 
+1

几周前我遇到了这个问题。使用: - > with($ this-> equalTo($ foo,$ bar) 为我工作 – ieure 2008-12-13 22:40:32