PHPUnit返回“数据集#0无效”。与dataProvider

时间:2019-01-29 15:42:24

标签: php phpunit

这个简单的类返回

  

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 :(得分:2)

如果您将数据提供程序用于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];
    }
}