2015-07-22 2 views
6

Я использую jasmine-node для тестирования моего API, и он отлично поработал для моих маршрутов GET. Теперь, однако, мне нужно протестировать некоторые POST, и я не уверен, как это сделать без изменения моей базы данных.Стратегия тестирования POST для API без изменения базы данных

Одна мысль, что я должен был сбросить любое значение, которое я изменяю в конце каждой спецификации.

Является ли это разумным или есть лучший способ проверить тестирование POST-запросов на мой API?

ответ

1

Просто сделайте дублируемую страницу обработки/функцию и отправьте данные для отладки. Комментируйте все, что вносит изменения в базу данных.

В качестве альтернативы, передайте переменную в своем вызове, такую ​​как «debug», и в разделе «Отладка» есть функция if/else в исходной функции, игнорируя остальную часть функции.

Еще одна альтернатива по-прежнему состоит в том, чтобы дублировать вашу таблицу базы данных и называть ее отладочной таблицей. Он будет иметь ту же структуру, что и ваш оригинал. Вместо этого отправьте тестовые данные и не изменит исходные таблицы базы данных.

2

Оберните все, что изменяет вашу базу данных в транзакцию. Вы можете изменить свою базу данных, а затем выполнить откат после каждого теста.

1

Обычно у вас должна быть тестовая база данных, поэтому измените ее, чтобы не было большой проблемы. Кроме того, общий подход заключается не в том, чтобы полагаться на предопределенные значения в базе данных (т. е. GET всегда запрашивает объект SAME ..), но каждый раз пытайтесь использовать разные объекты. (использование предопределенных объектов может скрыть проблемы, когда данные незначительно отличаются.). , чтобы реализовать вторую стратегию, вы можете выполнить тест с POST с псевдослучайными данными для создания нового объекта и использовать возвращаемый идентификатор для подачи следующих тестов GET, UPDATE и, наконец, DELETE.

1

Я уверен, что у вас уже есть решение для вашей проблемы.

НО, если вы этого не сделаете, Угловой $httpBackend решит вашу проблему. Это

Внедрение поддельного HTTP-бэкэда подходит для приложений модульного тестирования, которые используют службу $ http.