2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

csvファイルのアップロードをRSpecでテストしたい

Posted at

はじめに

新卒エンジニアの@yhorikawaです
csvをアップロードする機能を作っていたのですが、テストの方法がわからず苦戦したので
今後ファイルアップロード機能をテストしたいときのために備忘録として残します。

controller

csv_upload.rb
def csv_upload
  # csv読み込み部分
  csv = CSV.read(params[:csv])
  # このあと保存処理
end

このような形のcontrollerにparams[:csv]といった形でcsvを渡します。

テストコード

csv_upload_request_spec.rb
describe 'post #csv_upload' do
  let(:params) { { csv: fixture_file_upload('csv_file_path', 'text/csv') } }
  subject { post 'csv_upload', params }
  
  it 'upload_csv' do
    expect(subject).to be_success
  end
end

csvファイルをspec/fixtures/などに保存して
fixture_file_upload('csv_file_path', 'text/csv')にcsvファイルの相対パスを書くことで
ファイルをパラメーターとして渡すことができます

おわりに

fixture_file_upload を使うことで比較的簡単に実装することができました。
csvに限らずファイルのアップロード機能をテストしたいことはあると思うので記事を書きました。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?