Я получаю идею модульного тестирования, но стараюсь думать о чистом простом способе, когда это требует функциональности базы данных. Например, у меня есть функция, которая возвращает результат, основанный на запросе выбора базы данных. Будет ли база данных всегда оставаться для меня одинаковой, чтобы правильно видеть, что возвращаются только правильные результаты. Каков наилучший способ выполнения модульного тестирования (в PHP), когда он требует бездействия базы данных (будь то чтение, запись, обновление или удаление)?
В руководстве PHPUnit есть целая глава:
Это похоже на все остальное, когда Unit-Testing. Создайте известное состояние и протестируйте свой код против него, чтобы увидеть, возвращает ли он ожидаемые результаты.
Это не единичный тест, если ему нужна база данных.
Лично я создаю базу данных фиктивных тестов и заполняю ее известным набором данных для каждого setUp
прогона (я делаю это прямо в функциях setUp
). Затем тесты выполняются против этого набора данных, а затем удаляются на tearDown
…
Теперь это скорее тест интеграции, чем тест Unit (и лично я отношусь к нему иначе, чем к единичному тесту, работаю по своему расписанию вместе с другими интеграционными тестами), но он по-прежнему весьма полезен.