我已阅读有关该主题的文档,我的代码遵循数据提供程序实现的所有要求.首先,这是测试的完整代码,以防它相关.
这是实现数据提供者的功能:
/**
* Test the createGroup function
*
* @return void
* @author Tomas Sandven <tomas191191@gmail.com>
*
* @dataProvider provideFileImportTests_good
**/
public function testCreateGroup($file, $groupname, $group, $mapping)
{
// Create a test group
$id = $this->odm->createGroup($groupname, $group);
// Try to load it back out
$result = R::load(OmniDataManager::TABLE_GROUP, $id);
// Check that the result is not null
$this->assertFalse(is_null($result));
return $id;
}
Run Code Online (Sandbox Code Playgroud)
PHPUnit失败了:
缺少参数1 for tests\broadnet\broadmap\OmniDataManagerTest :: testCreateGroup()
我试过杀死die();数据提供程序函数中的application(),它永远不会发生.数据提供程序函数在同一个类中公开可用,函数名中没有拼写错误,函数testCreateGroup在注释的注释中引用它,但从不调用数据提供程序函数.
请解释原因
谢谢
Hub*_*bro 68
最后,经过几个小时的推测这个测试文件,我发现仅仅定义构造函数会破坏数据提供者的功能.很高兴知道.
要修复它,只需调用父构造函数.以下是我的案例:
public function __construct()
{
// Truncate the OmniDataManager tables
R::wipe(OmniDataManager::TABLE_GROUP);
R::wipe(OmniDataManager::TABLE_DATA);
parent::__construct(); // <- Necessary
}
Run Code Online (Sandbox Code Playgroud)
小智 46
如果你真的需要它,大卫哈克尼斯有正确的提示.这是代码:
public function __construct($name = NULL, array $data = array(), $dataName = '') {
$this->preSetUp();
parent::__construct($name, $data, $dataName);
}
Run Code Online (Sandbox Code Playgroud)
Ama*_*nut 10
对我来说,只删除构造函数已经工作.在我的类测试中调用父构造函数也破坏了注释,即使使用最新的PHPUnit稳定版本(6.0.9)也是如此.
我只是将我的代码移动__constructor到setUp我的单元测试运行之前调用的函数.
dar*_*enp 10
为了强调micro_user所做的这一点,@dataProvider注释必须在docblock注释中.即做到这一点:
/**
* @dataProvider myDataProvider
*
*/
public function testMyMethod(...)
{
...
}
Run Code Online (Sandbox Code Playgroud)
不要这样做,因为它不起作用:
/*
* @dataProvider myDataProvider
*
*/
public function testMyMethod(...)
{
...
}
Run Code Online (Sandbox Code Playgroud)
小智 7
确保 dataProvider 拼写正确... @dataProvidorvs@dataProvider
在需要数据提供者的测试函数中,需要一个包含
/**
* @dataProvider providerItCanTest
*//
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9829 次 |
| 最近记录: |