Тестирование множества внешних API в Rails - PullRequest
2 голосов
/ 13 ноября 2011

Я разрабатываю приложение Rails с большим количеством зависимостей от внешних API, например Delicious.Все API имеют два рабочих процесса:

  • При первом вызове они собираются загрузить все данные с начала времени.
  • Все последующие вызовы будут загружать данные, отфильтрованные по времени последнего выполнения.(если поддерживается).

Тестирование их в реальном времени означает, что я должен создать тестовую учетную запись для каждого API или, по крайней мере, использовать свою личную.Даже с VCR, потому что они будут вызваны один раз.И моя самая большая проблема: мне пришлось бы много возиться с Date и Time, чтобы эмулировать два разных рабочих процесса, упомянутых выше.Хотя Timecop делает это действительно легко, это похоже на боль в заднице.

Другой подход состоит в том, чтобы полностью подделать вызовы API и их соответствующие ответы, но это означает, что никаких реальных тестови более того, я бы никогда не осознал изменений или проблем с API.

Есть предложения?Может быть, хорошая комбинация обоих способов?

1 Ответ

1 голос
/ 13 ноября 2011

Делай и то, и другое.

Начните с насмешек / заглушек всего в вашем обычном тестовом наборе.Сделайте это для всех детальных испытаний моделей / контроллеров.

Затем добавьте сквозное тестирование (например, в интеграционных тестах), которое охватывает обычные сценарии рабочих процессов, которые затрагивают реальные (тестовые) серверы.

В качестве альтернативы используйте другой набор тестов для сквозного тестирования, например, огурец вместо Test :: Unit или selenium / Watir, если он отличается от вашего обычного набора тестов

...