如何使用PHPUnit测试多个mysql模式?

时间:2011-05-04 18:21:13

标签: php mysql unit-testing phpunit

我想测试一个使用PHPUnit的PHPUnit_Extensions_Database_TestCase类跨多个模式进行查询的进程。我已经挖掘了文档,SO和源代码,但似乎我必须使用以下内容设置我的数据库:

protected function getConnection()
{
    $this->pdo = new PDO('mysql:host=localhost;dbname=unit_test_schema', 'xxxx', 'yyyy');
    return $this->createDefaultDBConnection($this->pdo, 'unit_test_schema');    
}

protected function getDataSet()
{
    return $this->createXMLDataSet(DB_SETUP_DIR.'/schema.xml');
}

有没有办法以某种方式使用多个架构,所以我可以测试一个类似的查询:

SELECT *
FROM   schema1.tableA
JOIN   schema2.tableB
USING  (id)

编辑:要明确,我要解决的问题是我只能弄清楚如何将架构设置文件传递到一个数据库。我想找到一种方法来说“在schema1中创建tables1.xml,在schema2中创建tables2.xml”。对于每个测试,将填充并杀死不同xml文件中引用的表。

1 个答案:

答案 0 :(得分:3)

我做过的一件事是为每个模式创建一个定义,然后在单元测试时覆盖定义

define('schema1', 'schema1_prod');
define('schema2', 'schema2_prod');

然后进行单元测试

define('schema1', 'unit_tests');
define('schema2', 'unit_tests');

如果您有多个模式中的表名,这仍然会中断,但如果不这样,它应该会有所帮助。