Изменение наборов данных для каждого теста PHPUnit
Я немного новичок в тестировании PHPUnit, и мне нужно охватить несколько сценариев метода. Метод берет строки таблицы и принимает решения на ее основе, поэтому, если у меня 0 строк, соответствующих моему запросу, он выполнит одно действие, иначе он выполнит другое.
Я выполнил настройку DBUnit, и все работает, но весь класс работает с одним и тем же методом getDataSet, поэтому он запускает тот же MySQLXMLDump.
Например:
testScenarioA -> Пустая таблица.
testScenarioB -> Таблица содержит данные.
Мне нужно, чтобы каждая тестовая функция в моем классе загружала foo XML. Как я могу это сделать?
1 ответ
Так что если у вас есть набор данных в вашем классе модульного теста, вы можете получить набор данных, возвращающий пустые результаты и некоторые данные
public static function dataForTest() {
return [
'empty' => [getEmptyDataset()]
'results' => [getResults()]
];
}
Затем в функции, используемой для тестов, используйте это с вашим набором данных
/**
* @dataProvider dataForTest
*/
public function testSyncUser($dataTypes) {
foreach ($dataTypes as $dataType) {
// Run tests
}
}
В качестве альтернативы вы можете создать вспомогательный класс, который будет использоваться вместе с юнит-тестами для получения данных для тестов на лету. PHPUnit генерирует все наборы данных до создания экземпляра класса Test Unit, поэтому иногда это может быть полезным подходом.