2012-03-05 19 views
11

Quiero cortar la onda transportadora para evitar que obtenga imágenes en la web durante mis pruebas. ¿Cómo podría resguardar cosas para lograr esto?¿Cómo cortar la onda transportadora en Rspec?

Mi rastreador analiza una página web remota y guarda una url de imagen en el modelo. Carrierwave buscará esa imagen automáticamente durante la operación de guardar. Funciona bien.

Sin embargo, tengo una prueba sobre el análisis de páginas, y cada vez que se descarga el archivo, lo que ralentiza la prueba.

ACTUALIZACIÓN:

montes el cargador como las siguientes (en la columna de clip preexistente)

mount_uploader :image, TopicImageUploader, :mount_on => :image_file_name 

Me trataron de código auxiliar lo siguiente, pero no funcionó:

Topic.any_instance.stub(:store_image!) 
Topic.any_instance.stub(:store_image_file_name!) 
Topic.any_instance.stub(:store_image_remote_url!) 
+0

intente esto: 'allow (Tema) .to receive (: store_image!)' – ajahongir

Respuesta

14
TopicImageUploader.any_instance.stub(:download!) 
+2

Nueva sintaxis de RSpec: 'allow_any_instance_of (TopicImageUploader) .to receive (: download!)' – MikDiet

9

Esto es lo que estoy usando en mi spec_helper:

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

Esto bloquea por completo todas las cargas de archivos reales (tenga en cuenta que estoy usando esto con carrier wave 0.5.8, que es la versión más nueva al momento de escribir, si usa una versión mucho más antigua, podría diferir) Si desea controlar ensayos que stub archivos, puede utilizar:

CarrierWave::Mount::Mounter.any_instance.stub(:store!) 
+0

su solución es más generalizada de lo que me gusta. Sin embargo, estoy usando 0.5.8 y el stubbing en 'any_instance' parece no tener ningún efecto. – lulalala

+0

Funciona muy bien para mí en carrierwave 0.7.1. Con Mocha puedes usar: CarrierWave :: Mount :: Mounter.any_instance.stubs (: store!) En spec_helper y en la prueba: CarrierWave :: Mount :: Mounter.any_instance.unstub (: store!) – AJP

0
allow_any_instance_of(CarrierWave::Uploader::Base).to receive(:store!).and_return nil 
4

he reducido mi tiempo de prueba-suite desde 25 segundos a tan sólo 2 segundos con una configuración simple en el inicializador CarrierWave:

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

Esta configuración omite la manipulación de la imagen (cambio de tamaño, recorte, ...) de ImageMagick, MiniMagick ect.