私はoriginal_filenameを使っている間、ファイルのダウンロードのためのテストを書いています。私はfixture_file_upload
を使ってファイルアップロードを模擬することができました。しかし、元のファイル名の呼び出しをスタブ/モックする方法。Test :: Unitを使ってRailsでoriginal_filenameメソッドをスタブ/モックする方法
def import_for_photo(picture_url, user)
remote_photo = open(picture_url)
remote_photo.original_filename = "#{user.id}.jpg"
user.update_attributes({:picture => remote_photo})
end
テスト
def test_import_for_photo
fixture_file = fixture_file_upload(File.join('files', 'test.jpg'), 'image/jpeg')
OpenURI.expects(:open_uri).returns(fixture_file)
import_for_photo("http://dummy_url.com/dummy.jpg", users(:one))
assert_equal "1.jpg", users(:one).reload.picture_file_name
end
テスト出力、
NoMethodError: undefined method `original_filename=' for #<File:/tmp/test.jpg20120512-4253-x673nc-0>
私は、このテストが失敗した理由を知っているが、それを修正する方法?