如何规范CarrierWave MiniMagick操作

时间:2018-03-02 17:18:03

标签: ruby-on-rails rspec carrierwave minimagick

在我的CarrierWave上传器上执行“auto_orient”时遇到了编写RSpec测试的麻烦。我也没有在网上找到太多关于此事的爱。

我理解操作方法将由gem编写,但我只是想验证我的ImageUploader是否正确地使用RSpec实现它。

    class ImageUploader < CarrierWave::Uploader::Base
      include CarrierWave::MiniMagick

      ...

      version :tile do
        process :auto_orient
      end

      # Fix images being uploaded the wrong orientation
      def auto_orient
        manipulate! do |img|
          img = img.auto_orient
        end
      end



    let(:uploader) { ImageUploader.new(profile, :avatar) }

    before do
      ImageUploader.enable_processing = true
      File.open(File.join(Rails.root, '/spec/support/images/logo.png')) { |f| uploader.store!(f) }
    end

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

    xit 'runs auto_orient on the image' do
      # ???
    end

由于

1 个答案:

答案 0 :(得分:1)

我不是百分百确定如何在MiniMagick中完成这个,但是这就是我如何使用RMagick解决问题的方法。我应该采用类似的方法。

uploader.cache_stored_file!
# For minimagick, you would probably use MiniMagick::Image::read
mg = ::Magick::Image::read(uploader.file.file).first
# Not sure if minimagick has an "orient" attribute, might try reading the data using something from here instead: https://github.com/probablycorey/mini_magick/blob/master/lib/mini_magick.rb#L204
expect(mg.orientation.to_i).to eq(1)