ruby-on-rails rspec carrierwave

ruby on rails - ¿Cómo cortar la onda transportadora en Rspec?



ruby-on-rails carrierwave (4)

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 está utilizando una versión mucho más antigua, podría diferir). Si desea controlar las pruebas que cargan las cargas, puede usar:

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

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

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 sintáctico de las páginas, y cada vez que descargue el archivo, lo que ralentiza las pruebas.

ACTUALIZAR:

Monto el cargador como el siguiente (en la columna del clip preexistente)

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

Intenté colgar lo siguiente, pero ninguno funcionó:

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


TopicImageUploader.any_instance.stub(:download!)


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


Reduje el tiempo de mi suite de pruebas de 25 segundos a solo 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.