更改每个 PHPUnit 测试的数据集
Changing datasets for each PHPUnit Test
我在 PHPUnit 测试方面有点菜鸟,我需要涵盖一个方法的多个场景。该方法获取 table 的行并根据它做出决定,所以如果我有 0 行匹配我的查询,它将执行一些操作,否则,它将执行另一个。
我设置了 DBUnit,一切都是 运行,但是整个 class 是 运行 相同的 getDataSet 方法,所以它 运行 相同的 MySQLXML转储。
For example:
testScenarioA -> Empty table.
testScenarioB -> Table has data.
我需要在我的 class 上 each 测试函数加载 foo XML。我怎样才能做到这一点?
因此,如果您的单元测试中有一个数据集 class,您可能会有数据集 return 空结果和一些数据
public static function dataForTest() {
return [
'empty' => [getEmptyDataset()]
'results' => [getResults()]
];
}
然后在用于测试的函数中将其与您的数据集一起使用
/**
* @dataProvider dataForTest
*/
public function testSyncUser($dataTypes) {
foreach ($dataTypes as $dataType) {
// Run tests
}
}
或者,您可以创建一个助手 class 与您的单元测试一起使用,以动态获取测试数据。 PHPUnit 在测试单元实例化之前生成所有数据集 class 因此有时这可能是一种有用的方法。
我在 PHPUnit 测试方面有点菜鸟,我需要涵盖一个方法的多个场景。该方法获取 table 的行并根据它做出决定,所以如果我有 0 行匹配我的查询,它将执行一些操作,否则,它将执行另一个。
我设置了 DBUnit,一切都是 运行,但是整个 class 是 运行 相同的 getDataSet 方法,所以它 运行 相同的 MySQLXML转储。
For example:
testScenarioA -> Empty table.
testScenarioB -> Table has data.
我需要在我的 class 上 each 测试函数加载 foo XML。我怎样才能做到这一点?
因此,如果您的单元测试中有一个数据集 class,您可能会有数据集 return 空结果和一些数据
public static function dataForTest() {
return [
'empty' => [getEmptyDataset()]
'results' => [getResults()]
];
}
然后在用于测试的函数中将其与您的数据集一起使用
/**
* @dataProvider dataForTest
*/
public function testSyncUser($dataTypes) {
foreach ($dataTypes as $dataType) {
// Run tests
}
}
或者,您可以创建一个助手 class 与您的单元测试一起使用,以动态获取测试数据。 PHPUnit 在测试单元实例化之前生成所有数据集 class 因此有时这可能是一种有用的方法。