Ruby on Rails - случайно провалившиеся тесты RSpec - PullRequest
0 голосов
/ 04 декабря 2018

Извините за мой глупый вопрос.

Я добавил внешний API, чтобы получить ответ для проверки правильности почтового индекса.

app / validators / zipcode_validator.rb

class ZipcodeValidator < ActiveModel::Validator
  def validate(record)
    record.errors.add(:zipcode, :blank) if record.zipcode.blank?
    record.errors.add(:zipcode, :not_found) if WmsService.wms_delivery_dates(record.zipcode).nil?
  end 
end

Работает нормально в режиме реального времени, но случайно выходит из строя и занимает больше времени при запуске rspec.

Какое хорошее решение для этой ситуации?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы не должны вызывать внешние API в своих тестах.Есть несколько способов избежать этого:

  1. VCR gem записывает ответ API при первом вызове, а затем отвечает на него с диска (это быстро и надежно).
  2. Ложные HTTP-звонки, например, с WebMock .Вам нужно написать указать смоделированный запрос и написать ответ в ваших спецификациях.Это может помочь вам улучшить читаемость теста, а также помогает в крайних случаях тестирования.
  3. Оберните ваш сервисный вызов в вашем классе и замените его заглушкой RSpec.
  4. Оберните ваш сервисный вызов в своем классе, которыйпринимает адаптеры.Адаптер отвечает за вызов внешнего сервиса.В тестовой среде пройдите тестовый адаптер с заранее заданными ответами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...