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