PHPUnit, interfaces simuladas y instanceof
unit-testing mocking (2)
Esto funciona para mí:
$mock = $this->getMock(''TestInterface'');
$this->assertTrue($mock instanceof TestInterface);
Tal vez es un error tipográfico o tal vez $ instancia no es lo que crees que es?
A veces, en mi código, verifico si un objeto en particular implementa una interfaz:
if ($instance instanceof Interface) {};
Sin embargo, al crear burlas de dicha interfaz en PHPUnit, parece que no puedo pasar esa prueba.
// class name is Mock_Interface_431469d7, does not pass above check
$instance = $this->getMock(''Interface'');
Entiendo que tener una clase llamada Interface es diferente de una interfaz de implementación de clase, pero no estoy seguro de cómo lidiar con esto.
¿Estoy obligado a burlarme de una clase concreta que implementa Interface? ¿No vencería eso el propósito de usar una interfaz para la portabilidad?
Gracias
también hay assertInstanceOf a partir de 3.5.0
Ejemplo:
$this->assertInstanceOf(''/Models/User'', $this->userService->findById(1));