php unit-testing mocking phpunit

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