gpt4 book ai didi

php - 如何使用 PHPUnit 插入特定于测试用例的数据库行

转载 作者:可可西里 更新时间:2023-11-01 13:11:27 25 4
gpt4 key购买 nike

当使用 PHPUnit 测试依赖于数据库的类时,getDataSet() 方法提供数据作为整个测试套件的测试夹具。这很好,但是如何为特定测试提供数据呢?这并不罕见,尤其是在使用最小化数据集时,对于每个测试都需要在所有测试使用的公共(public)数据之上的不同数据库数据。我知道 PDO 对象可用,在我们的例子中,应用程序的 native DB 对象也可用(意思是,我们可以运行原始查询或使用应用程序中的其他功能),但最好有一种方法来插入数据这是由 PHPUnit 的数据集容器驱动的,因此所有测试数据都以相同的方式处理,以提高清晰度并简化维护。

有什么办法可以做到这一点吗?

最佳答案

你可以遵循这样的卑鄙伎俩:

protected function getDataSet()
{
if (in_array($this->getName(), array('testA', 'testB', '...'))) {
return $this->createXMLDataSet(__DIR__ . '/_fixtures/fistureA.xml');
}

return $this->createXMLDataSet(__DIR__ . '/_fixtures/fixtureB.xml');
}

小提示:$this->getName()返回当前测试方法名

另一种方法是在测试开始时重新运行设置操作:

public function testA()
{
$this->getDatabaseTester()->setDataSet($this->createFlatXMLDataSet(__DIR__ . '/_fixtures/fixtureForTestA.xml'));
$this->getDatabaseTester()->onSetUp();

/* your test code */
}

关于php - 如何使用 PHPUnit 插入特定于测试用例的数据库行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9385317/

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