gpt4 book ai didi

unit-testing - 在 PHPUnit/DBUnit 中关闭外键约束

转载 作者:行者123 更新时间:2023-12-04 01:42:55 28 4
gpt4 key购买 nike

我正在开发用于测试模型功能的单元测试。

我在 DBUnit 1.1.2 和 PHPUnit 3.6.10 中使用 PHP PDO,我的数据集是一个 yml 文件。

在数据库中加载夹具时,我需要关闭外键检查。之后我需要再次打开它,以便我可以在这些约束下运行我的测试。

下面是我的通用测试用例文件中的代码片段(不是整个类文件),我将包含在我开发的任何新测试用例中。

当我在这些设置下运行测试用例时,我发现 $pdo->exec() 没有执行。

我的方法有什么问题?有更好的选择吗?

class MyTestCase extends PHPUnit_Extensions_Database_TestCase {

public function getConnection() {
$this->pdo = $this->getPDO();

echo "BEFORE FOREIGN KEY QUERY\n";
$conn = $this->createDefaultDBConnection($this->pdo, 'my-schema');
$this->pdo->exec("set foreign_key_checks=0");

return $conn;
}

private function getPDO() {
include BASEPATH . '/application/config/database.php';
$dbt = $db['testing'];
$conn_string = sprintf("%s:host=%s;dbname=%s", $dbt['dbdriver'], $dbt['hostname'], $dbt['database']);
$pdo = new PDO($conn_string, $dbt['username'], $dbt['password']);
return $pdo;
}

public function getDataSet() {
echo "BEFORE FOREIGN KEY QUERY in getDataSet\n";
$this->pdo->exec("set foreign_key_checks=1");
return new PHPUnit_Extensions_Database_DataSet_YamlDataSet(ROOTPATH."/application/tests/data/my-dataset.yml");
}

public function setUp() {
parent::setUp();
}

最佳答案

像这样改变你的功能设置

protected function setUp() {
$conn=$this->getConnection();
$conn->getConnection()->query("set foreign_key_checks=0");
parent::setUp();
$conn->getConnection()->query("set foreign_key_checks=1");
}

关于unit-testing - 在 PHPUnit/DBUnit 中关闭外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904126/

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