Как мне иметь дело с онлайн-зависимостями при запуске RSPEC Offline?

StackOverflow https://stackoverflow.com/questions/4603161

  •  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 Внутри испытаний / спецификаций вы не хотите подключиться к удаленному ресурсу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top