PHPUnit:数据库测试的多个数据集

前端之家收集整理的这篇文章主要介绍了PHPUnit:数据库测试的多个数据集前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在 PHPUnit上加载多个平面xml数据集来加载大量的灯具?

我们正在编写一个相当复杂的应用程序,并且xml数据集变得非常大,所以我想把它放到2-3 xml中.

以下是测试用例的当前代码

<?PHP

class My_TestBase extends Zend_Test_PHPUnit_DatabaseTestCase{ 

/**
 * Zend_Application
 * @var Zend_Application 
 */
protected $_application;

/**
 * Connection
 * 
 * @var Zend_Test_PHPUnit_Db_Connection
 */
private $_connection;

/**
 * Returns the test database connection.
 *
 * @link http://framework.zend.com/wiki/display/ZFPROP/Zend_Test_PHPUnit_Database+-+Benjamin+Eberlei
 * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection
 */
protected function getConnection(){

    if($this->_connection === null){

        $Resources = $this->_application->getOption("resources");

        $conn = Zend_Db::factory($Resources["db"]["adapter"],$Resources["db"]["params"]);          
        $this->_connection = $this->createZendDbConnection($conn,$Resources["db"]["params"]["dbname"]);
    }

    return $this->_connection;
}


/**
 * Returns the test dataset.
 * 
 * @link http://framework.zend.com/wiki/display/ZFPROP/Zend_Test_PHPUnit_Database+-+Benjamin+Eberlei
 * @return PHPUnit_Extensions_Database_DataSet_IDataSet
 */
protected function getDataSet(){

    return $this->createFlatXMLDataSet(__DIR__."/seed_data.xml");
}

/**
 * Setup
 */
protected function setUp(){

    $this->_application = new Zend_Application(
        APPLICATION_ENV,APPLICATION_PATH . '/configs/application.ini'
    );
}

}

免责声明:以下内容仅适用于yaml灯具,由于某种原因,xml灯具API不能提供相同的功能(检查源代码),不要问我为什么,似乎我们应该能够添加多个表而不管夹具文件格式类型.

API有点笨拙,正是为什么我不喜欢将args传递给构造函数,特别是在这种情况下,但尝试以下(这已经过测试和工作):

class MyTest extends PHPUnit_Extensions_Database_TestCase
{
    protected function getDataset()
    {
        $primary = new PHPUnit_Extensions_Database_DataSet_YamlDataSet('etc/fixture/dbname/table1.yml');

        $primary->addYamlFile('etc/fixture/dbname/table2.yml');
        $primary->addYamlFile('etc/fixture/dbname/table3.yml');

        return $primary;
    }
...
}

猜你在找的PHP相关文章