Издевательство над PHP 7 и возвращаемыми типами

Я использую объявление типа возвращаемого значения и обновляю издевательство до версии 1.1, в зависимости от эта почта, но все же оно не работает должным образом.

У меня есть фабрика с методом:

public function getScrapperByUrl($type):AppScrapperInterface
{
    $this->validate($type);
    switch ($type) {
        case self::ITUNES:
            return app(ITunesScrapper::class);
            break;
        case self::PLAYSTORE:
            return app(PlayStoreScrapper::class);
            break;
        default:
            throw new AppScraperException("Can't scrap info");
    }
}

а в тестах я издеваюсь над поведением ITunesScrapper:

$m = m::mock(ITunesScrapper::class);
    $scrapedInfo = [
        'name' => "comico",
        'downloads' => ""
    ];
    $m->shouldReceive('getOfferAnchor')->with(m::any())->andReturn($scrapedInfo['name']);
    $m->shouldReceive('getOfferDownloads')->with(m::any())->andReturn($scrapedInfo['downloads']);
    App::instance(ITunesScrapper::class, $m);

и я получаю такую ​​ошибку

TypeError: Return value of Scrappers\ScrapperFactory::getScrapperByUrl() must be an instance of Scrappers\AppScrapperInterface, instance of Mockery_2__Adgate_Components_AppstoreFetchers_Itunes_ITunesScrapper returned.

Я что-то делаю не так или мне нужно указать эту проблему в отчете об ошибке?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
420
1

Ответы 1

Эту ошибку можно решить, используя префикс псевдонима с допустимым именем класса. Как следующее:

$m = m::mock('alias:ITunesScrapper');

Более подробную информацию можно найти в официальной документации http://docs.mockery.io/en/latest/reference/creating_test_doubles.html#aliasing

Другие вопросы по теме