#php #database #integration-testing
#php #База данных #интеграция-тестирование
Вопрос:
Приветствую;
Я пишу свои интеграционные тесты, поэтому я хотел бы знать, какова наилучшая практика для интеграционного тестирования php-сайта, управляемого базой данных? Должен ли я добавлять и удалять данные в setup() и teardown () соответственно для каждого теста или моя тестовая база данных должна просто вводить тестовые данные перед любым тестированием?
Я спрашиваю не о том, какие инструменты использовать, а скорее о подходе. Заранее спасибо.
Ответ №1:
с моей точки зрения, стратегия, которая будет использоваться в тестах, является очень личным решением команды. Обычно в своих проектах я использую BDD (Behavior driven development) для обеспечения функциональности API.
Например (Особенности CRUD):
- Я создаю новые данные с помощью сервиса (banana.create)
- Я перечисляю все данные (banana.list) и проверяю, существуют ли новые данные в then
- Я составляю список с использованием filter (banana.list?id= xxx) и проверяю, соответствует ли структура ответа
- Я удаляю строку (banana.delete) и проверяю ее с помощью сервиса list…
А для специфических компонентов модели я использую TDD (Test driven development), используя концепции mock…
Но основные трудности связаны с дизайном приложения… не в тестах: D
[]’s
Комментарии:
1. Привет, Фелипе, спасибо за ответ, у меня есть полный набор модульных тестов для моего класса db, но они используют фиктивные подключения к db, поэтому требуются тесты реализации для проверки работы sql. Я мог бы предварительно заполнять или добавлять и удалять его каждый раз. Не зная, что лучше, вот почему я опубликовал этот вопрос.
2. Джим, тебе следует использовать транзакции базы данных (например: запуск в setUp и откат в tearDown). Но я предпочитаю использовать базу данных с некоторыми шаблонными данными и восстанавливать их.