首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试: RSpec + Carrierwave + Carrierwave_backgrounder + Sidekiq

如何测试: RSpec + Carrierwave + Carrierwave_backgrounder + Sidekiq
EN

Stack Overflow用户
提问于 2016-10-03 15:18:53
回答 1查看 730关注 0票数 3

我用的是Carrierwave,carrierwave_backgrounder,Sidekiq和RSpec。

在没有后台工作的情况下,我通过执行以下操作来测试Carrierwave上传程序的处理:

代码语言:javascript
复制
before do
  ImageUploader.enable_processing = true
  File.open('spec/assets/image.jpg') do |f|
    uploader.store!(f)
  end
end

after do
  ImageUploader.enable_processing = false
  uploader.remove!
end

context 'the thumb version' do
  it 'should scale down a landscape image to be exactly 350 by 350 pixels' do
      uploader.thumb.should have_dimensions(350, 350)
    end
  end
end

context 'the view version' do
  it 'should scale down a landscape image to fit within 1680 by 10000 pixels' do
    uploader.large.should be_no_larger_than(1680, 10000)
  end
end

这些测试主要重复Uploader的实现,但可能包含需要测试的实际逻辑。

我无法让上传程序在测试中进行处理。在carrierwave_backgrounder页面上,他们说使用RSpec测试有一些问题,因为after_commit钩子没有被调用。我尝试使用TestAfterCommit-gem,但没有成功。

上传者:

代码语言:javascript
复制
class ImageUploader < BaseImageUploader
  include ::CarrierWave::Backgrounder::Delay
  before :cache, :save_original_filename

  storage :file

  # Resizes to width 1680px (if the image is larger)
  version :large do
    process resize_to_fit: [1680, 10000]
    process :watermark

    def store_dir
      %(uploads/#{model.parent.class.name.pluralize.downcase}/#{model.parent.id}/large)
    end
  end

  # Creates a thumbnail version
  version :thumb do
    process resize_to_fill: [350, 350]

    def store_dir
      %(uploads/#{model.parent.class.name.pluralize.downcase}/#{model.parent.id}/thumb)
    end
  end

型号:

代码语言:javascript
复制
class Image < ActiveRecord::Base   
  mount_uploader :file, ImageUploader
  process_in_background :file

  def original
    file.url
  end

  def thumb
    file.thumb.url
  end

  def view
    file.large.url
  end
 end
EN

回答 1

Stack Overflow用户

发布于 2017-02-10 22:05:22

我也有同样的问题,包括我的rails_helper.rb文件:

代码语言:javascript
复制
require 'sidekiq/testing'
Sidekiq::Testing.inline!
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39826304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档