PHPUnit中的警告使用dataProvider和Function作为结果

时间:2016-07-20 14:21:46

标签: phpunit warnings

我写了一个方法来测试我的代码,但问题是当我使用dataProvider时我得到了:

  

1) Warning The data provider specified for userTest::testItCanValidateApiKeysAndDomainAutoTest is invalid. Call to undefined function show_message()

     

WARNINGS!   Tests: 5, Assertions: 12, Warnings: 1.

这是我的代码,当我使用它而没有dataProvider

public function testItCanValidateApiKeysAndDomainByInputData(){
    $this->user->setApiKey('306942ac');
    $this->user->setDomain('test.com');
    $this->assertEquals(show_message(103), $this->user->verifyPurchaseKey());
}

它工作得很棒,但是当我使用dataProvider

public function inputApiKeys()
{
    return array(
        array(
            'f5e47ee75672b855a8d76f5d54aa7ce6914',
            'reza.com',
            false,
        ),
        array(
            'f5e47asdasdasd',
            'reza.com',
            show_message(100),
        ),
        array(
            '0ecc580a009d929b13337509721a4',
            'test12.com',
            show_message(102),
        ),
        array(
            '0ecc580a009d9230604659b13337509721a4',
            '127.0.0.1',
            show_message(1,
                '6233c772-e214-a45d8c1e04e2'),
        ),
        array(
            '0ecc580a009d9204659b13337509721a4',
            'localhost',
            show_message(1,
                '6233c772a45d8c1e04e2'),
        ),
        array(
            'ac45e9ff50c5aac05d25c2605d2195f33b4',
            'mm.mu.com',
            show_message(102),
        ),
        array(
            'ac45e9f1aeab519f50c5aac05d25c2605d2195f33b4',
            'reza.wpengine.com',
            show_message(103),
        ),
        array(
            '000604659b13337509721a4',
            'mnm.wpengine.com',
            '6233c772-3-9cc4-a45d8c1e04e2'),
    );
}

/**
 * @dataProvider inputApiKeys
 */
public function testItCanValidateApiKeysAndDomainAutoTest($apikey, $domain, $result)
{
    $this->user->setApiKey($apikey);
    $this->user->setDomain($domain);
    $this->assertEquals($result, $this->user->verifyPurchaseKey());
}

你可能会认为我在autoload加载的另一个文件中使用show_message来实现项目.. 收到警告信息..

1 个答案:

答案 0 :(得分:2)

在数据提供程序功能结束时返回创建的数据结构非常重要:

return $reza;

这通常应该使它工作。至少我尝试过你的代码,如果我全局声明show_message()函数,它就可以在这里工作。

消息Call to undefined function show_message()表示此功能不在数据提供者的范围内。如果直接在测试函数中调用show_message(),这似乎很奇怪。所以我认为,当你没有使用数据提供者时,你的代码可能会有更多不同。