Cómo probar un segundo parámetro en un objeto simulado de PHPUnit

1 minuto de lectura

avatar de usuario
Joel

Esto es lo que tengo:

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

Pero el método debe tomar dos parámetros. Solo estoy probando que el primer parámetro se pasa correctamente (como $arg1).

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

avatar de usuario
silenciado

Creo que la forma 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 necesita realizar un tipo diferente de aserción en el segundo argumento, también puede hacerlo:

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

Si necesita asegurarse de que algún argumento pase varias afirmaciones, use logicalAnd()

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

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

    – ieure

    13 de diciembre de 2008 a las 22:40

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

    –Nate Bundy

    12/09/2013 a las 16:36

¿Ha sido útil esta solución?