2008-11-22 2 views
53

Это то, что у меня есть:Как проверить второй параметр в PHPUnit фиктивного объекта

$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); 

Если вам нужно выполнить другой тип утверждения на 2-арг, вы можете сделать это, тоже:

$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

Я столкнулся с этим пару недель назад. Использование: -> с ($ this-> equalTo ($ foo, $ bar) Работал для меня. – ieure 2008-12-13 22:40:32

Смежные вопросы