Ruby on Rails: лучший способ проверить неудачный вызов стороннего API

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

Что меня любопытно, так это наличие достаточно хороших тестов, ничего особенного, где я могу смоделировать, как мое приложение реагирует, когда сторонняя веб-служба недоступна по какой-либо причине. Будь то то, что я превысил ограничение скорости или тайм-аут из-за задержки / осложнений в сети, я просто хочу иметь возможность взять что-то вроде кода состояния HTTP и проверить, что мое приложение делает в этом случае.

Как лучше всего это сделать с помощью Test :: Unit? Прямо сейчас вызов сторонней службы инкапсулирован внутри одного из моих контроллеров. У меня есть простой модуль с некоторыми методами-оболочками для разных конечных точек удаленной службы. Я просто хочу убедиться, что мое приложение работает правильно, когда служба доступна или недоступна.

Используется ли дополнительный фреймворк рядом с Test :: Unit, который может «заглушить» правильный способ сделать это? Очевидно, что я не могу принудительно установить тайм-аут сети, и начинать взламывать такие вещи, как IPtables, только для тестов, не стоит потраченного времени. Я уверен, что эта проблема решалась миллион раз, поскольку в наши дни так популярна интеграция таких вещей, как Facebook и Twitter, в веб-приложения. Как вы проверяете наличие сбоев при обращении к этим API в надежном / контролируемом формате?

6
задан randombits 24 October 2011 в 22:51
поделиться