2014-02-26 58 views
1

我將對象保存到RSpec中的數據庫。該對象具有Carrierwave字段及其存在驗證。我在工廠使用fixture_file_upload這個字段,速度很慢。我想完整地對Carrierwave文件進行處理,但是所有的解決方案都顯得過時了,我無法讓它們工作。在RSpec中蹭載波以加速測試

我的模型:

class Product < ActiveRecord::Base 
    validates_presence_of :image 
    mount_uploader :image, ProductMainImageUploader 
end 

我廠:

factory :product do 
    name   { Faker::Product.product_name } 
    slug   { name ? name.parameterize : nil } 
    image   { 'sample_image.jpg' } 
end 

我的規格:

describe Product do 
    it "creates record" do 
    ProductMainImageUploader.any_instance.stub(:store!) 
    ProductMainImageUploader.any_instance.stub(:store_image!) 
    product = create(:product) 
    end 
end 

結果:

1) Product creates record 
    Failure/Error: product = create(:product, name: 'heyo') 
    ActiveRecord::RecordInvalid: 
     Validation failed: Image can't be blank 
    # ./spec/models/product_spec.rb:26:in `block (2 levels) in <top (required)>' 

存根根本沒有任何作用。我使用的是Ruby 2.1.0。我能做些什麼來解決這個問題?

回答

0

嘗試磕碰圖像

before do 
    Product.stub(:image).and_return(ProductMainImageUploader.new) 
end 
+0

謝謝,但我得到了同樣的錯誤:( – leemour