使用FactoryGirl测试时不保存图像属性

时间:2013-08-12 18:40:05

标签: ruby-on-rails activerecord activeadmin factory-bot rspec-rails

应用

我在表格bg_image中有一个列User,它使用了载波上传器

mount_uploader :bg_image, UserLogoUploader

它以activeadmin / formtastic形式设置,如下所示:

f.input :bg_image, :label => "Background Image", :as => :file

测试(问题出在哪里)

我有User工厂制作包含所有必填字段的基本版本(适用于其他测试),但是当我尝试添加bg_image时,它不会被保存。

工厂:

FactoryGirl.define do
  factory :user do
    stuff "set in factory"
  end
end

测试文件:

let!(:user) { create(:user, :something => "that works", :bg_image => "doesntWork.png") }

it "inspects the element" do
  puts user.inspect
end

打印出来

#<User id: 1, stuff: "set in factory", something: "that works", bg_image: nil>

我似乎无法弄清楚为什么它不能保存!

我尝试过将其设置为File对象的一些内容,但这不起作用,因为它需要是一个字符串

2 个答案:

答案 0 :(得分:0)

我非常确定它不起作用,因为在你的测试中你使用bg_image作为字符串,记得你为bg_image安装了一个上传器,你需要使用它来运行载波,我会查看carrierwave文档以获取有关测试的信息,希望它有所帮助!

这里有一些文档:

https://github.com/carrierwaveuploader/carrierwave#testing-with-carrierwave

答案 1 :(得分:0)

我的工厂图片文件:


include ActionDispatch::TestProcess

FactoryGirl.define do
  factory :image do
    file { Rack::Test::UploadedFile.new(File.join(Rails.root, 'spec','support', 'test_images', 'audi.png')) }
    created Time.now.to_s
    tags    { Faker::Lorem.characters 20 }
    user    { FactoryGirl.create(:user) }
  end
end