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