Как тестировать взаимодействие с БД PHPUnit?

Добрый день. Для тестирования кода на PHP я использую PHPUnit.
На данный момент занимаюсь написанием архитектуры приложения, при этом используя шаблон Data Mapper. Соответственно, большинство тестов должно сводится к проверке взаимодействия кода с БД. CRUD операции с сущностью и т.д. Я думаю здесь нужно проверять непосредственно работу с БД, а не заменяться это stub объектами. Является ли вообще тестирование взаимодействия с БД модульным? И как правильно проводить данное тестирование. Использовать ли DBUnit. Опять же как? Спрашиваю не о том, что можно почитать в документации, а конкретно о лучших решениях, которые пришли с опытом. Спасибо!
  • Вопрос задан
  • 2991 просмотр
Пригласить эксперта
Ответы на вопрос 1
Keksinautin
@Keksinautin
Software Engineer
Модульным наверно уже не является. Я бы назвал его "интеграционным", потому что мы тестируем как работает ваш код совместно с базой.
Суть заключается в том, что мы (в случае записи в базу) подаем на вход методу данные, а потом проверяем, что мы получили в базе, причем без использования нашего кода. В случае чтения наоборот, сначала сторонними средствами создаем записи, а потом проверяем, как они прочитаются.
Я в таких тестах всегда поступал следующим образом:
1. Создаем "дата-провайдера" - который в декларативной форме описывает параметры: "что на входе метода" и "что в базе" или "что в базе" и "что на выходе метода".
2. У нас есть прямой доступ к базе, с помощью него в каждом тесте мы либо создаем запись в базе, либо проверяем, что туда записал тестируемый метод.
Но думаю, такими тестами не стоит сильно увлекаться, ведь они по сути просто проверяют, что вы правильно составили запрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы