Rails4 アップロードしたファイルのテスト

前回、csvファイルをアップロードして読み込む方法を調べた。
Rails4 csvファイルをアップロードして読み込む - ayaketanのプログラミング勉強日記


そのテストをおこなうため、アップロードしたファイルのテスト方法を調べた。
fixture_file_uploadを使うと、\spec\fixturesに入っているファイルのアップロードがおこなえる。

テスト用にアップロードするファイルを準備

\spec\fixtures\filesにテスト用ファイルtest_user.csvファイルを入れる。

fixture_file_uploadを使用可能にする

\spec\models\user_spec.rbの先頭でinclude

include ActionDispatch::TestProcess

ファイルをアップロードして、テストをおこなう

\spec\models\user_spec.rbにテストを書く。

it "CSVファイルを読み込んで、ハッシュの配列に変換する" do
  csv_file = fixture_file_upload('files/test_user.csv', 'text/csv')
  csv_data = User.load_csv(csv_file)
  # ここにテストを書く
end


参考:
【ruby】Railsでファイルアップロードをテストする - tanihiro.log
test a file upload using rspec - rails - Stack Overflow