2014-10-10 31 views
1

我想找到我上次上传的文件(使用Carrierwave)并运行与Rspec的have_dimensions方法。定位上传的文件与Rspec 3

目前我的测试结果失败,错误是

Failure/Error: expect(@uploader.large_animal_image).to have_dimensions(555, 365) 
Errno::ENOENT: 
    No such file or directory @ rb_sysopen - 

我的测试看起来像这样(以下试过他们的GitHub页面,但如预期的文件上传没有工作的示例)

require 'rails_helper' 
require 'carrierwave/test/matchers' 

describe AnimalImage do 
    include CarrierWave::Test::Matchers 

    before(:each) do 
    AnimalImageUploader.enable_processing = true 
    @animal = FactoryGirl.create(:image) 
    @uploader = AnimalImageUploader.new(@animal, :image) 
    ap(@uploader) 
    @uploader.store! 
    end 

    after(:each) do 
    @uploader.remove! 
    AnimalImageUploader.enable_processing = false 
end 

context 'Image Versions' do 

    it 'should scale large_animal_image to 555 x 365 ' do 
    expect(@uploader.large_animal_image).to have_dimensions(555, 365) 
    end 
end  
end 

ap(@uploader)输出

#<AnimalImageUploader:0x000000080ae738 @model=#<AnimalImage id: 50, animal_id: nil, image: "yp2.jpg", created_at: "2014-10-10 07:41:20", updated_at: "2014-10-10 07:41:20">, @mounted_as=:image> 

它CRE阿泰以下文件

/support 
    /animal_image 
    /image 
    /50 
    yp2.jpg 
    large_animal_image_yp2.jpg 

我怎样才能访问这些文件,以对它们运行have_dimensions方法?

感谢

回答

1

好了,所以搞清楚@uploader.store!做什么(我傻)

我需要存储我的文件解决了这个

before(:each) do 
AnimalImageUploader.enable_processing = true 
file = File.open("#{Rails.root}/spec/fixtures/yp2.jpg") 
@animal = AnimalImage.create!(image: file) 
@uploader = AnimalImageUploader.new(@animal, :image) 
@uploader.store!(file) 
end