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.