CSVファイルのアップロードを行う機能のテストコードをrspecで行いたい場合、view側がこんなコードだとすると
<%= form_tag(upload_import_file_path, {:multipart => true }) do %>
<p>
ファイル
<br>
<%= file_field_tag :csv_file %>
</p>
<br>
<p><%= submit_tag "アップロード" %></p>
<% end %>
コントローラのテストは次の用なコードを書く。
describe "csvファイルのアップロード時" do
let(:csv) { "upload_data.csv" }
before(:each) do
@bulk_params = {csv_file: fixture_file_upload(csv, "text/csv")}
# file_field_tag に設定したシンボルと合わせる。ここではcsv_file
end
it "レコードの追加に成功する" do
post :upload_import_file, @bulk_params
expect(InpData.count).to eq xxx
end
end
spec/fixtures/の下にテストで使うcsvファイルを設置すればOK。
fixture_file_uploadに渡すファイルパスは、spec/fixtures/がルートとなる相対パスで。