PHPUnit возвращает "Набор данных № 0 недействителен."с dataProvider - PullRequest
0 голосов
/ 29 января 2019

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

1) Предупреждение. Поставщик данных, указанный для App \ Tests \ Twig \ GenerateTokenTest :: testGenerateToken, недействителен.Набор данных № 0 недействителен.

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;
    }
}

Знаете ли вы, почему?

1 Ответ

0 голосов
/ 29 января 2019

Если вы используете провайдеров данных для 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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...