En PHPUnit podemos especificar el método fue llamado con especialComprobar que el método de simulacro se llama sin ningún tipo de parámetros pasados (en PHPUnit)
->with($this->equalTo('foobar'))
o cualquier parámetro
->with($this->anything())
.
¿Pero hay una forma de especificar que el método ha sido llamado sin parámetros?
Esta es la prueba que espero a fallar:
public function testZ()
{
$a = $this->getMock('q');
$a->expects($this->once())
->method('z')
->with(); // <--- what constraint to specify here?
$a->z(1);
}
UPD:
La pregunta tiene carácter teórico, así que no tengo ningún ejemplo de la vida real. Algunos casos, podría ser útil que se me ocurre en este momento es:
public function testMe($object)
{
$object->foo();
}
Y vamos a suponer que debería testMe
(por diseño y por los requisitos) siempre llamar al método sin parámetros (suponiendo foo()
tiene falta de pago). Porque cualquier parámetro no predeterminado (más preciso: cualquier parámetro! = Al predeterminado uno, que aún no conocemos y que probablemente podría cambiar de forma independiente) en este caso causa consecuencias fatales.
+1 He pasado unos minutos buscando en el origen de PHPUnit en github y parece que '-> con()' solo funciona para realmente especificar parámetros, no prohibirlos. Realmente no puedo pensar en un escenario donde verificar que no se pasó ningún argumento es algo que necesitarías verificar, ¿no? Me interesaría saber por qué necesita verificar que no se envió ningún argumento. Pasar un argumento cuando no se espera ninguno, no romperá nada y ¿no puede simplemente pasar un NULO cuando se espera un argumento que no se puede proporcionar? – rdlowrey
@rdlowrey: se agregó una actualización de la explicación ;-) – zerkms
@rdlowrey: 'no se puede pasar un NULL cuando se espera un argumento que no se puede proporcionar --- --- no no se puede. El método todavía podría tener parámetros opcionales – zerkms