我在RSpec中将对象保存到数据库。该对象具有Carrierwave字段及其存在验证。我在工厂中使用fixture_file_upload
来表示该字段,而且速度非常慢。我想完全删除Carrierwave文件处理,但所有解决方案似乎都已过时,我无法让它们工作。
我的模特:
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 :(得分:0)
尝试存根图像
before do
Product.stub(:image).and_return(ProductMainImageUploader.new)
end