###前提・実現したいこと
jsonファイルをアップロードして、それをテーブルにimportする機能のテストコードを書いています。
テストコード自体は問題なく動くのですが、テスト実行時に非推奨の警告が出てしまっています。
###発生している問題・エラーメッセージ
DEPRECATION WARNING: Using positional arguments in integration tests has been deprecated, in favor of keyword arguments, and will be removed in Rails 5.1. Deprecated style: get "/profile", { id: 1 }, { "X-Extra-Header" => "123" } New keyword style: get "/profile", params: { id: 1 }, headers: { "X-Extra-Header" => "123" } (called from block in <class:MenusControllerTest> at /solution/test/controllers/menus_controller_test.rb:3)
###該当のソースコード
MenusController #post def import path = params[:file].path result = Menus::ImportService.new(path).import flash[:error] = result.error redirect_to(menus_path) end
Testコード #エラーが出るjsonをimportして、エラーがでたかどうかを確認するテスト 現在はこれで問題なく動いているが、テスト実行時に警告が出てしまう。 test 'json import error test' do ins_jsonpath = Rack::Test::UploadedFile.new(File.expand_path('./docs/testfile/json_ins_check.json', '.'), 'text/json') post menus_path(menuname1: 'menuname1', menuname2: 'menuname2'), file: ins_jsonpath assert_equal flash[:error].count, 1 end
###試したこと
エラーを見る限り、post時のパラメーターの渡し方に問題がありそうなので、以下のように渡し方を修正してみましたが、だめでした。
① post menu_slips_path(menuname1: 'menuname1', menuname2: 'menuname2', file: ins_jsonpath) ➔ controllerのparams[:file].pathでエラー ② post menu_slips_path params:{ menuname1: 'menuname1', menuname2: 'menuname2', file: ins_jsonpath } ➔ NoRouteエラー
パラメーターの渡し方云々ではなく、uploadのテスト方法が誤っているような気もしています。
ご教示頂ければと思います。よろしくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
Rails5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/26 00:23 編集
2017/12/26 00:30