【发布时间】:2012-04-11 20:17:30
【问题描述】:
我正在开发用于测试模型功能的单元测试。
我正在使用带有 DBUnit 1.1.2 和 PHPUnit 3.6.10 的 PHP PDO,我的数据集是一个 yml 文件。
在将灯具加载到数据库中时,我需要关闭外键检查。之后我需要再次打开它,以便我可以在这些限制下运行我的测试。
下面是我的通用测试用例文件中的一个 sn-p(不是整个类文件)代码,我将包含在我开发的任何新测试用例中。
当我在这些设置下运行测试用例时,我发现 $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();
}
【问题讨论】:
-
我也想要一个更好的解决方案。但这应该工作
-
更好的解决方案在这里:stackoverflow.com/questions/10331445/…
标签: unit-testing pdo foreign-keys phpunit dbunit