2015-12-02 12 views
0

我在PHPUnit测试中有点不习惯,我需要涵盖一个方法的多个场景。该方法获取表的行并根据它进行决策,因此如果我有0行匹配我的查询,它将执行一些操作,否则它将执行另一个操作。更改每个PHPUnit测试的数据集

我做了DBUnit的设置,一切正在运行,但整个类运行相同的getDataSet方法,因此它运行相同的MySQLXMLDump。

例如:

testScenarioA - >空表。

testScenarioB - >表中有数据。

我需要上我的课每测试功能加载 XML。我怎么能做到这一点?

+0

这是什么课程?它有什么方法?你使用什么数据集? –

+0

不管它是什么类,也不管它有什么方法。问题是:我如何动态加载基于测试功能的数据集,而不是类? – gfviegas

+0

没有**任何**信息,我们无法帮助您。请添加一些,否则您将无法获得答案。 –

回答

0

所以,如果你在你的单元测试类的数据集,你可以有数据集返回空的结果和一些数据

public static function dataForTest() { 

    return [ 
     'empty' => [getEmptyDataset()] 
     'results' => [getResults()] 
    ]; 
} 
在用于测试的功能

然后使用与您的数据集

/** 
* @dataProvider dataForTest 
*/ 
public function testSyncUser($dataTypes) { 
    foreach ($dataTypes as $dataType) { 
     // Run tests 
    } 
} 

或者,您可以创建一个辅助类,与您的单元测试一起使用,以便即时获取测试数据。 PHPUnit在实例化测试单元类之前生成所有数据集,所以有时这可能是一种有用的方法。

+0

主要问题是用数据转储我的MySQL数据库。我在这里使用这个人:https://phpunit.de/manual/current/en/database.html#database.implementing-getdataset – gfviegas