Как мне работать с онлайн-зависимостями при работе Rspec в автономном режиме? - PullRequest
1 голос
/ 05 января 2011

Я хотел бы запустить RSpec для проверки своего кода, когда я подключен к сети, а когда нет.

К сожалению, в приложении есть несколько тестов, которые зависят от наличия прямого соединения - отправка электронной почты, интеграция с Facebook и т. Д.

Существует ли наилучший способ создания среды для онлайн / офлайн тестирования или это плохая практика? Судя по тому, как мало я могу найти об этом в Интернете, я предполагаю последнее.

Ответы [ 2 ]

1 голос
/ 05 января 2011

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

Здесь есть краткое руководство по издевательству с помощью 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

Не уверен, что я полностью защищаю это, но это может сделать то, что вы хотите!

0 голосов
/ 09 декабря 2014

Вы можете использовать webmock внутри тестов / спецификаций, которые вы не хотите подключать к удаленному ресурсу.

...