Как мне иметь дело с онлайн-зависимостями при запуске RSPEC Offline?
-
25-09-2019 - |
Вопрос
Я хотел бы запустить RSPEC, чтобы проверить свой код как, когда я подключен к Интернету и когда я нет.
К сожалению, в приложении есть некоторые тесты, которые зависят от имеющихся в реальном времени - отправка электронной почты, интеграция Facebook и т. Д.
Есть ли лучший путь для создания среды онлайн / офлайн-тестирования или это плохая практика? Судя по тому, как мало я могу найти об этом в Интернете, я думаю, что последнее.
Решение
Обычно в таких ситуациях вы бы издевались на части кода, который подключается вне вашего приложения. Это позволяет вам тестировать против ожидаемых результатов от службы / системы, к которой вы подключаетесь. Также быстрее запустить тесты.
Там краткое руководство по издеванию с RSPEC здесь Но я уверен, что вы можете найти себе сам.
Для тестирования того, что электронные письма отправляются, есть другие подходы, если вы отправляете через ActionMailer. Там раздел на этом в Руководство по тестированию рельсов.
Редактировать (в ответ на комментарий): вы можете поставить метод в TestHelper
только запустить тесты, когда вы онлайн. Что-то типа:
def when_online
if test_remote_connectivity
yield
else
puts "Skipping test offline."
end
end
Тогда вы можете назвать это как:
def test_facebook
when_online do
.....
end
end
Не уверен, что я полностью защищаю это, но это может сделать то, что вы хотите!
Другие советы
Вы могли бы использовать webmock Внутри испытаний / спецификаций вы не хотите подключиться к удаленному ресурсу.