Integration testの中でファイルアップロードができない

現在のRails(1.2.4および2.0 Preview)にはIntegration testの中でファイルアップロードができないというバグがあるようです。実際にやってみると、fixture_file_uploadを使ってもActionController::TestUploadedFileのオブジェクトにならず、ActionController::TestUploadedFileをinspectした文字列がコントローラに渡されます。

この問題を回避するためのコードが#4635 (unable to test file uploads with integration testing framework) - Rails Tracにあります。このticketに添付されているファイルはパッチではなく、ActionController::Integration::Session#multipart_postというメソッドを定義する.rbファイルです。つまりこのファイルをrequireし、fixture_file_uploadを使うpostには、代わりにmultipart_postを使えば良いわけです。comment:26に書かれている通りです。

Integration testなんて書かないという人も多いと思いますが、Integration testでしか検出できないバグもあるわけで、そういうバグを見つけてしまうと書かずにはいられませんね。