Изменение наборов данных для каждого теста 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, поэтому иногда это может быть полезным подходом.

Другие вопросы по тегам