test example curso coverage php interface phpunit mocking

example - La creación del objeto simulado de la interfaz con una sugerencia de tipo en el método falla en PHPUnit



phpunit manual (1)

He creado la siguiente interfaz:

<?php interface Action { public function execute(/requests/Request $request, array $params); }

Luego trato de hacer un objeto simulado de esta interfaz con PHPUnit 3.4, pero aparece el siguiente error:

Error grave: la Declaración de Mock_Action_b389c0b1 :: execute () debe ser compatible con la de Action :: execute () en D: / Xampp / xampp / php / PEAR / PHPUnit / Framework / TestCase.php (1121): eval () '' Código d en la línea 2

Miré a través del seguimiento de pila que obtuve de PHPUnit y descubrí que crea un objeto simulado que implementa la acción de la interfaz, pero crea el método de ejecución de la siguiente manera:

<?php public function execute($request, array $params)

Como puede ver, PHPUnit se hace cargo de la sugerencia de tipo de matriz, pero se olvida de / request / Request. Lo que obviamente conduce a un error. ¿Alguien sabe una solución para este error?

También lo probé sin espacios de nombres, pero sigo teniendo el mismo error.


Tal vez un poco tarde.

Tuve este mismo problema y resultó que el tipo insinuado no estaba cargado ni cargable. Como resultado, ReflectionParameter de PHP no devuelve el nombre de la clase, y el generador simulado de PHPUnit no lo incluye.

Si se asegura de que el tipo sugerido esté cargado o que se pueda cargar con la carga automática, debería funcionar.