前提・実現したいこと
requestテストにおいて以前までcontroller(旧式)の形で記述していた箇所を
requestの形に変更したいと考えているのですが変更すると自分の記述の仕方に誤りが
あるかとは思いますがテストが通りません。
また、テスト実行時に返ってくるエラーの内容が(ActiveRecord::RecordNotFound)から(ActionController::UrlGenerationError)に変わってしまいます。
もちろん後者のエラーが返ってくるのをexpecで指定するとテストは通りますが
これだとテストになっていないと思っています。
発生している問題・エラーメッセージ
1) Potepan::CategoriesController#show IDが空欄の場合エラーが発生する Failure/Error: expect { get potepan_category_path('') }.to raise_error(ActiveRecord::RecordNotFound) expected ActiveRecord::RecordNotFound, got #<ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"potepan/categories", :id=>""}, missing required keys: [:id]> with backtrace: # ./spec/requests/potepan/categories_spec.rb:35:in `block (4 levels) in <top (required)>' # ./spec/requests/potepan/categories_spec.rb:35:in `block (3 levels) in <top (required)>' # ./spec/requests/potepan/categories_spec.rb:35:in `block (3 levels) in <top (required)>'
該当のソースコード
rails
1it 'IDが空欄の場合エラーが発生する' do 2 expect { get potepan_category_path('') }.to raise_error(ActiveRecord::RecordNotFound) 3end
試したこと
返ってくるエラー内容を(ActionController::UrlGenerationError)に変更すると
テストはもちろん通ります。
補足情報(FW/ツールのバージョンなど)
以前のテストの状態は下記の通りです。
これをrequsestの形に変更したいです。
expect { get :show, params: { id: '' } }.to raise_error(ActiveRecord::RecordNotFound) ```
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。