Как заглушить несущую в Rspec? - PullRequest
12 голосов
/ 05 марта 2012

Я хочу заблокировать несущую, чтобы она не загружала изображения в Интернете во время моих тестов.Как бы я ошеломил вещи для достижения этой цели?

Мой сканер анализирует удаленную веб-страницу и сохраняет один URL-адрес изображения в модели.Carrierwave автоматически извлечет это изображение во время операции сохранения.Это работает хорошо.

Однако у меня есть тест на разбор страниц, и каждый раз он загружает файл, что замедляет тестирование.

ОБНОВЛЕНИЕ:

Я монтируюзагрузчик, как показано ниже (в ранее существовавшем столбце скрепки)

Ответы [ 4 ]

14 голосов
/ 10 марта 2012
TopicImageUploader.any_instance.stub(:download!)
9 голосов
/ 10 марта 2012

Это то, что я использую в моем spec_helper:

class CarrierWave::Mount::Mounter
  def store!
  end
end

Это полностью блокирует все реальные загрузки файлов (обратите внимание, что я использую это с несущей волной 0.5.8, которая является новейшей версией ввремя написания, если вы используете гораздо более старую версию, она может отличаться).Если вы хотите контролировать тесты, которые загружают заглушки, вы можете использовать:

CarrierWave::Mount::Mounter.any_instance.stub(:store!)
4 голосов
/ 06 мая 2015

Я сократил время набора тестов с 25 секунд до 2 секунд с помощью простой конфигурации в инициализаторе CarrierWave:

# config/initializers/carrier_wave.rb
CarrierWave.configure do |config|
  config.enable_processing = false if Rails.env.test?
end

Этот конфиг пропускает манипуляции с изображениями (изменение размера, обрезка, ...) ImageMagick, MiniMagick и т. Д.

0 голосов
/ 03 апреля 2015
allow_any_instance_of(CarrierWave::Uploader::Base).to receive(:store!).and_return nil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...