在我的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
由于
答案 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)