現象
Rails 5.2 x RSpec 3.8 でAjax実装(viewでremote: trueにしてAjax通信)して、以下のような感じで書いてRSpecを実行すると、
xhr: post, message_likes_path(valid_attributes)
expect(response).to have_http_status(401)
以下のエラーが出力される。
1) LikesController POST #create when user is not logged in redirect to login page
Failure/Error: xhr :post, message_likes_path(valid_attributes)
NoMethodError:
undefined method `xhr' for #<RSpec::ExampleGroups::LikesController::POSTCreate::WhenUserIsNotLoggedIn:0x007f8b513ea948>
原因
書き方が誤っていた。「xhr: true」にすることで解決。
post :create, xhr: true, params: { message_id: valid_attributes[:message_id] }
expect(response).to have_http_status(401)