PHPUnit возвращает «Набор данных № 0 недействителен». с поставщиком данных

Этот простой возврат класса

1) Warning The data provider specified for App\Tests\Twig\GenerateTokenTest::testGenerateToken is invalid. Data set #0 is invalid.

class GenerateTokenTest extends TestCase
{
    /**
     * @dataProvider provideToken
     */
    public function testGenerateToken(int $length): void
    {
        $token = GenerateToken::generate($length);

        $this->assertTrue(true);
    }

    public function provideToken(): iterable
    {
        yield 8;
        yield 16;
        yield 29;
    }
}

Ты знаешь почему ?

Вы пытались вернуть массив вместо одного целого числа?

Nico Haase 29.01.2019 16:50

С массивом все в порядке, я не понимаю, но все в порядке, спасибо :)

Gaylord.P 29.01.2019 16:54
Стоит ли изучать 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 и хотите разрабатывать...
5
2
2 051
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете поставщиков данных для PhpUnit, они ожидают, что при каждом вызове будет возвращен массив данных. Этот внутренний массив должен соответствовать входным переменным для вашего тестового метода. Итак, если у него есть этот единственный аргумент $length, поставщик данных должен вернуть множество, содержащий тестовый ввод, например yield [8];.

Если тестовый метод использует более одной входной переменной — вы, наверное, уже догадались: массив должен содержать больше значений. Например, на основе вашего кода:

class GenerateTokenTest extends TestCase
{
    /**
     * @dataProvider provideToken
     */
    public function testGenerateToken(int $length, int $size): void
    {
        $token = GenerateToken::generate($length);

        $this->assertTrue(true);
    }

    public function provideToken(): iterable
    {
        yield [8, 9];
        yield [16, 17];
        yield [29, 30];
    }
}

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