LoginSignup
14
18

More than 5 years have passed since last update.

RspecでCSVファイルアップロードを行っているコントローラのテストを行いたい場合

Last updated at Posted at 2015-03-21

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/がルートとなる相対パスで。

14
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
18