Я создал следующий интерфейс:
<?php
interface Action
{
public function execute(\requests\Request $request, array $params);
}
Тогда я пытаюсь сделать Фиктивный объект этого интерфейса с PHPUnit 3.4, но я получаю следующую ошибку:
Фатальная ошибка: Объявление Mock_Action_b389c0b1:: выполнитесь (), должно быть совместимо с тем из Действия:: выполнитесь () в D:\Xampp\xampp\php\PEAR\PHPUnit\Framework\TestCase.php(1121): оценка () 'd кодирует на строке 2
Я просмотрел отслеживание стека, которое я получил от PHPUnit и нашел, что это создает Фиктивный объект, который реализует интерфейс Action, но создает выполнить метод следующим образом:
<?php
public function execute($request, array $params)
Как Вы видите, PHPUnit принимает подсказку типа массива, но забывает о \requests\Request. Который, очевидно, приводит к ошибке. Кто-либо знает обходное решение для этой ошибки?
Я также попробовал его без пространств имен, но я все еще получаю ту же ошибку.
Возможно, немного поздно.
У меня была точно такая же проблема, и оказалось, что намек на тип не был загружен и не загружался. В результате PHP ReflectionParameter не возвращает имя класса, а генератор макетов PHPUnit не включает его.
Если вы убедитесь, что тип с подсказкой загружен или загружается с помощью автозагрузки, он должен работать.