我写了一个方法来测试我的代码,但问题是当我使用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来实现项目.. 收到警告信息..
答案 0 :(得分:2)
在数据提供程序功能结束时返回创建的数据结构非常重要:
return $reza;
这通常应该使它工作。至少我尝试过你的代码,如果我全局声明show_message()
函数,它就可以在这里工作。
消息Call to undefined function show_message()
表示此功能不在数据提供者的范围内。如果直接在测试函数中调用show_message()
,这似乎很奇怪。所以我认为,当你没有使用数据提供者时,你的代码可能会有更多不同。