RSpecでテストデータ用にファイルを読み込む
RSpecでテスト用のファイルを読み込む
RSpecでテスト用のファイルを読み込む際はデフォルトでは spec/fixtures/files
にファイルを置いて
file_fixture("example.txt").read
とすると、ファイルの中身がspec中で呼び出せる。
ファイル中にHTMLやJSONのレスポンスを入れておいてHTTPリクエストをモックしたい場合などに使える。
既にfixturesに他にファイルがあってそれらに合わせてファイルの場所を既定のパスから変更したい場合は
RSpec.configure do |config| config.file_fixture_path = "spec/custom_directory" end
で可能となる。
RSpecでファイルをアップロードする
テストデータでファイルを使いたい状況としては、HTTPリクエストのモック以外にもファイルのアップロードのテストなどがある。
その場合は fixture_file_upload
を以下のように使う。
post :change_avatar, avatar: fixture_file_upload('files/spongebob.png', 'image/png')
このメソッドで使うファイルのパスは config.file_fixture_path
ではなく、config.fixture_path
で指定するので注意。