【问题标题】:PHP, phpunit, and dbunit - getConnection and getDataSet don't get called if setUp and tearDown are overriddenPHP、phpunit 和 dbunit - 如果 setUp 和 tearDown 被覆盖,则不会调用 getConnection 和 getDataSet
【发布时间】:2018-09-08 23:56:33
【问题描述】:

我正在使用现有的 phpunit 测试套件,并尝试合并 dbunit。特别是,我想使用 dataSet 抽象来加载夹具数据并在我之后进行清理。 我已将 PHPUnit_Extensions_Database_TestCase_Trait 特征添加到测试用例中,并实现了函数 getConnection 和 getDataSet。但是,这些方法只会被 trait 的默认 setUp 和 tearDown 方法调用。我的许多测试都定义了自己的 setUp 和 tearDown 方法。 是否有不同的地方我应该放置这个现有的 setUp/tearDown 代码,这样我就不必从特征中覆盖 setUp 和 tearDown ? 参考代码:

  class FooTest extends \PHPUnit_Framework_TestCase {

    use PHPUnit_Extensions_Database_TestCase_Trait;

    static private $pdo = null;
    private $conn = null;

    public function testTrueIsTrue() {
      $foo = true;
      $this->assertTrue($foo);
    }

    public function setUp() {
      error_log("in setUp");
    }

    public function tearDown() {
      error_log("in tearDown");
    }

    public function getConnection() {
      error_log("in getConnection");
      return $this->createDefaultDBConnection();
    }

    /**
     * @return PHPUnit_Extensions_Database_DataSet_IDataSet
     */
    public function getDataSet() {
      error_log("in getDataSet");
      return new PHPUnit_Extensions_Database_DataSet_DefaultDataSet();
    }
  }

【问题讨论】:

  • 所以从覆盖方法运行父方法
  • parent::setUp(); 作为setUp() 方法等的第一行等
  • 我想调用由 trait 添加的 setUp 和 tearDown 方法,而不是从父级继承的方法。

标签: php phpunit


【解决方案1】:

好吧,这是一个特殊的例子:

How to override trait function and call it from the overridden function?

所以,我修改了我的use 声明:

use PHPUnit_Extensions_Database_TestCase_Trait {
  setUp as protected defaultSetUp;
  tearDown as protected defaultTearDown;
}

并将调用添加到默认方法:

public function setUp() {
  $this->defaultSetUp();
  error_log("in setUp");
}

public function tearDown() {
  error_log("in tearDown");
  $this->defaultTearDown();
}

【讨论】:

    猜你喜欢
    • 2013-10-15
    • 2015-08-10
    • 2014-11-12
    • 1970-01-01
    • 2010-12-24
    • 2013-01-25
    • 1970-01-01
    • 2019-03-22
    • 2012-12-06
    相关资源
    最近更新 更多