gpt4 book ai didi

PHPUnit @dataProvider 根本不起作用

转载 作者:IT王子 更新时间:2023-10-29 01:14:20 25 4
gpt4 key购买 nike

我已阅读有关该主题的文档,并且我的代码符合数据提供程序实现的所有要求。首先,here's the full code of the test以防万一。

这是实现数据提供者的功能:

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

PHPUnit 失败了:

Missing argument 1 for tests\broadnet\broadmap\OmniDataManagerTest::testCreateGroup()

我已经尝试在数据提供程序函数中终止应用程序 (die();),但它从未发生过。数据提供者函数在同一个类中公开可用,函数名中没有拼写错误,testCreateGroup 函数在评论中的注释中引用了它,但数据提供者函数从未被调用。

有人知道为什么吗?

最佳答案

最后,在对这个测试文件进行了数小时的测试后,我发现仅仅定义构造函数会破坏数据提供者的功能。很高兴知道。

要修复它,只需调用父构造函数。这是我的情况:

public function __construct()
{
// Truncate the OmniDataManager tables
R::wipe(OmniDataManager::TABLE_GROUP);
R::wipe(OmniDataManager::TABLE_DATA);

parent::__construct(); // <- Necessary
}

作为 David HarknessVasily在注释中指出,构造函数重写必须匹配基类构造函数的调用签名。在我的例子中,基类构造函数不需要任何参数。我不确定这是否只是在较新版本的 phpunit 中发生了变化,或者它是否取决于您的用例。

无论如何,Vasily 的示例可能更适合您:

public function __construct($name = null, array $data = array(), $dataName = '')
{
// Your setup code here

parent::__construct($name, $data, $dataName)
}

关于PHPUnit @dataProvider 根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com