我正在使用现有的phpunit测试套件,并尝试合并dbunit。特别是,我想使用数据集抽象来加载灯具数据并在我之后清理。我已将phpunit_extensions_database_testcase_trait特征添加到测试用例中,并实现了函数getConnection和getDataset。但是,这些方法仅通过特征的默认设置和拆卸方法来调用。我的许多测试都有自己的设置和拆卸方法定义。我应该将这个现有的设置/拆卸代码放置在某个地方,以便我不必覆盖特征的设置和拆除?参考代码:
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();
}
}
好的,这是这样的专业情况:
如何覆盖特质功能并从覆盖功能中调用它?
所以,我已经修改了我的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();
}