1
我想在使用FactoryGirl 3.0的rails 3.2.6上創建回形針3.1.2的功能測試,當我傳遞文件附件時,我的控制器收到一個字符串,它是文件位置而不是Paperclip :: Attachment對象。Paperclip ::使用FactoryGirl作爲字符串傳遞的附件
我廠是:
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的」等我很困惑,爲什麼我的工廠返回「 Paperclip :: Attachment「,當調用同一個方法來創建它們時。
在此先感謝您可以擺脫的任何光線,因爲顯然我想使用工廠而不是在其外定義fixture_file_upload。
不幸的是,給出了相同的結果 –