加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

单元测试 – 在PHPUnit / DBUnit中设置外键约束

发布时间:2020-12-13 16:37:31 所属栏目:PHP教程 来源:网络整理
导读:我正在开发用于测试模型功能的单元测试. 我使用PHP PDO与DBUnit 1.1.2和PHPUnit 3.6.10,我的数据集是一个yml文件. 在数据库中加载灯具时,我需要关闭外键检查.之后,我需要再次打开它,以便我可以在这些约束下运行我的测试. 以下是我广义Testcase文件中的代码片
我正在开发用于测试模型功能的单元测试.

我使用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 QUERYn";
  $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 getDataSetn";
  $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");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读