2008-11-22 12 views
53

Esto es lo que tengo:Cómo probar un segundo parámetro en un objeto de burla PHPUnit

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

Pero el método debería tomar dos parámetros. Solo estoy probando que el primer parámetro se está pasando correctamente (como $ arg1).

¿Cómo se prueba el segundo parámetro?

Respuesta

85

Creo que la manera de hacer esto es:

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

O

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

Si es necesario realizar otro tipo de afirmación en la segunda arg, se puede hacer eso, también:

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

Si usted necesita para asegurarse de algún argumento pasa varias afirmaciones, utilice logicalAnd()

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

Me encontré con esto hace un par de semanas. Usando: -> con ($ this-> equalTo ($ foo, $ bar) Funcionó para mí – ieure

+3

@ieure El segundo argumento para equalTo() es $ delta, por lo que probablemente no haga lo que usted cree hace. –

Cuestiones relacionadas