0

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

我做了 DBUnit 的设置,一切都在运行,但是整个类都在运行相同的 getDataSet 方法,所以它运行相同的 MySQLXMLDump。

例如:

testScenarioA -> 空表。

testScenarioB -> 表有数据。

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

4

1 回答 1

0

因此,如果您的单元测试类中有一个数据集,您可以让数据集返回空结果和一些数据

public static function dataForTest() {

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

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

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

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

于 2015-12-02T16:08:16.390 回答