11

attachment_fu を使用して、作業ファイルのアップロード機能の仕様を書こうとしています。ただし、作成者がテスト用に提供したサンプル コードでは、クラスaction_controller/test_processにアクセスできるように require する必要があります。ActionController::UploadedStringIORails 2.xでこれを使用したことがありますが、Rails 3ではtest_processファイルを見つけることができません。

Rails 3 でファイル アップロード機能をテストするにはどうすればよいですか?

4

3 に答える 3

23

Rails3 と rspec では、fixture_file_upload を問題なく使用できました。

include ActionDispatch::TestProcessspec_helper.rb に追加して、次のようなものをファイルデータとして渡しました。

fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png')

編集:私がアップグレードしたものは、常にフィクスチャパスを含めるようにこれの動作を変更したため、fixture_file_upload の代わりにこれに切り替えました:

Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png')
于 2011-05-04T18:24:35.620 に答える
4

私は現在、Rails 3 でファイルのアップロードのテストに取り組んでいますが、私の答えがどれほど役立つかはわかりません。テストを変更することはできますか?個人的には、Cucumber/Capybara アプローチを使用しています。Capybara の DSL の定義

attach_file('Image', '/path/to/image.jpg')

個人的には、これは StringIO オブジェクトと対話するよりもテストするのに適した方法のようです...気軽に反論してください。

于 2010-10-26T17:30:46.333 に答える
3

これは、Rails 3 では見つけるのがやや困難でした。

この関数は引き続き使用できfixture_file_uploadますが、以下を追加する必要があります。

include ActionDispatch::TestProcess

あなたのテストケースに。

これは Rspec ではまったく機能しませんでした。ファイル自体を取得して、ファイルを直接投稿する必要がありました。

于 2011-04-11T20:27:01.750 に答える