ファイルを送信するコントローラーアクションをテストするには?
テストでそれを行うとcontroller.should_receive(:send_file)
、何もレンダリングされないため、「Missing template」で失敗します。
ファイルを送信するコントローラーアクションをテストするには?
テストでそれを行うとcontroller.should_receive(:send_file)
、何もレンダリングされないため、「Missing template」で失敗します。
動作する別の方法は次のとおりです。
controller.should_receive(:send_file).and_return{controller.render :nothing => true}
私にとって、これは の意図された副作用がsend_file
他に何もレンダリングされないようにすることであるという事実を捉えています。(とはいえ、スタブで元のオブジェクトのメソッドを呼び出すのは、確かに少し不安定に思えます。)
これは、RSpec コントローラーのテストでうまく機能しました。私はそれをスタブ化しないことを好みますが、代わりにオリジナルを呼び出して、ファイルを返し、応答ヘッダーなどにアクセスすることさえできます...
expect(controller).to receive(:send_file).with(some_filepath, type: "image/jpg").and_call_original