Подтвердить что ты не робот

Что такое стандартная/лучшая практика для создания модульных тестов для функциональности с использованием баз данных?

Я получаю идею модульного тестирования, но стараюсь думать о простом чистом способе, когда требуется база данных. Например, у меня есть функция, которая возвращает результат, основанный на запросе выбора базы данных. Будет ли база данных всегда оставаться для меня одинаковой, чтобы правильно видеть, что возвращаются только правильные результаты. Каков наилучший способ выполнить модульное тестирование (в PHP), когда он требует бездействия базы данных (будь то чтение, запись, обновление или удаление)?

4b9b3361

Ответ 1

В руководстве PHPUnit есть целая глава:

Это похоже на все остальное, когда Unit-Testing. Создайте известное состояние и протестируйте свой код против него, чтобы увидеть, возвращает ли он ожидаемые результаты.

Ответ 2

Это не unit test, если ему нужна база данных.

Ответ 3

Лично я создаю базу данных фиктивных тестов и заполняю ее известным набором данных для каждого тестового прогона (я делаю это прямо в функциях setUp). Затем тесты выполняются против этого набора данных, а затем удаляются на tearDown...

Теперь это скорее тест интеграции, чем Unit test (И лично я отношусь к нему иначе, чем к unit test, работаю по своему расписанию вместе с другими интеграционными тестами), но он по-прежнему весьма полезен.