Создание Фиктивного объекта Интерфейса с подсказкой типа в методе перестало работать на PHPUnit

Я создал следующий интерфейс:

<?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. Который, очевидно, приводит к ошибке. Кто-либо знает обходное решение для этой ошибки?

Я также попробовал его без пространств имен, но я все еще получаю ту же ошибку.

18
задан Mark 31 January 2010 в 11:12
поделиться

1 ответ

Возможно, немного поздно.

У меня была точно такая же проблема, и оказалось, что намек на тип не был загружен и не загружался. В результате PHP ReflectionParameter не возвращает имя класса, а генератор макетов PHPUnit не включает его.

Если вы убедитесь, что тип с подсказкой загружен или загружается с помощью автозагрузки, он должен работать.

26
ответ дан 30 November 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: