我试图创建使用FactoryGirl 3.0导轨3.2.6回形针3.1.2功能测试,当我通过文件附件我控制器接收一个字符串,它是文件位置,而不是回形针::附件对象。
我厂是:
include ActionDispatch::TestProcess
FactoryGirl.define do
factory :artist do
id 1
name 'MyString'
photo {fixture_file_upload("#{Rails.root}/test/fixtures/files/rails.png",'image/png')}
end
end
而我的测试:
test "should create artist" do
assert_difference('Artist.count') do
post :create, :artist => { name: @artist.name, photo: @artist.photo }, :html => { :multipart => true }
end
assert_redirected_to artist_path(assigns(:artist))
end
在我的控制器这样的:
params[:artist][:photo].class.name
等于“字符串”,但这种通过当我把它添加到测试
assert @artist.photo.class.name == "Paperclip::Attachment"
我目前的解决办法是建立在测试中fixture_file_upload:
test "should create artist" do
assert_difference('Artist.count') do
photo = fixture_file_upload("/files/rails.png",'image/png')
post :create, :artist => { name: @artist.name, photo: photo }, :html => { :multipart => true }
end
assert_redirected_to artist_path(assigns(:artist))
end
其作品,但创建一个“机架::测试:: UploadedFile的”等我很困惑,为什么我的工厂返回一个“回形针::附件”时同样的方法被调用来创建他们。
预先感谢您能在此有何启示因为很明显,我想用工厂,而不是定义它外面的fixture_file_upload。