我正在开发用于测试模型功能的单元测试.
我使用PHP PDO与DBUnit 1.1.2和PHPUnit 3.6.10,我的数据集是一个yml文件.
在数据库中加载灯具时,我需要关闭外键检查.之后,我需要再次打开它,以便我可以在这些约束下运行我的测试.
以下是我广义Testcase文件中的代码片段(不是整个类文件),我将为我开发的任何新的测试用例添加代码.
当我在这些设置下运行测试用例时,我发现$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(); }
改变你的功能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"); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。