更改每个PHPUnit测试的数据集

时间:2015-12-02 14:02:54

标签: php phpunit database-testing

我在PHPUnit测试中有点不知所措,我需要涵盖方法的多个场景。该方法获取表的行并根据它做出决策,所以如果我有0行匹配我的查询,它将执行一些操作,否则,它将执行另一个。

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

  

例如:

     

testScenarioA - >空表。

     

testScenarioB - >表有数据。

我需要我的类上的每个测试函数加载 foo XML。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

因此,如果您在Unit Test类中有数据集,则可以让数据集返回空结果和一些数据

public static function dataForTest() {

    return [
        'empty' => [getEmptyDataset()]
        'results' => [getResults()]
    ];
}

然后在用于测试的函数中,将其与数据集一起使用

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

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