Не удается вернуть объекты в @dataProvider PHPUnit

Можно ли возвращать объекты из @dataProviders в методы тестирования?

public function iOsMessages()
{
    return [
        'update available'        => [1, new UpToDateMessage(), 'pl'],
    ];
}

/**
 * @test
 * @dataProvider iOsMessages
 */
public function success_create_message_for_ios(int $appVersion, MobileMessage $message, string $locale)
{
(...)

Ошибка:

Поставщик данных, указанный для Tests\Tests\Mobile\Classes\AppVersionTest::success_create_message_for_ios, недействителен. Класс 'Mobile\Classes\Messages\UpToDateMessage' не найден

MobileMessage - это интерфейс, импорт правильный.


person wujt    schedule 05.02.2018    source источник
comment
Сообщение об ошибке говорит, что класс не существует. PHPUnit не виноват в этом. Проверьте конфигурацию автозагрузчика и/или имя класса и пространство имен.   -  person axiac    schedule 05.02.2018
comment
Просто помните, что поставщики данных выполняются только один раз перед всеми тестами из тестового примера.   -  person axiac    schedule 05.02.2018
comment
@axiac Есть ли разница? Эти поставщики используются только один раз в отдельных тестах.   -  person wujt    schedule 05.02.2018


Ответы (1)


Из документации:

Метод поставщика данных должен быть общедоступным и либо возвращать массив массивов, либо объект, реализующий интерфейс Iterator и возвращающий массив для каждого шага итерации.

person Louis-Marie Matthews    schedule 05.02.2018