какова наилучшая практика для интеграционного тестирования php, управляемого базой данных?

#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). Но я предпочитаю использовать базу данных с некоторыми шаблонными данными и восстанавливать их.