はじめに
いいね機能やフォロー機能をajaxで作る時、Request specではどう書くかわからず
困ったので、メモしておきます。
結論
結論から言うとこのような形で書くと、ajaxで書いた機能をテストできます。
今回はいいね機能のテストを書いております。
いいね機能についてはこちらの記事を参考に作りました。
[Rails]いいね機能の非同期での実装!!!
(前提としてlike_pathのrouteにはusername
とpost_id
が表示されるようにしているため、FactoryBotでuserとそのpostを作り、そのpostにいいねできることをテストしております。)
it "いいねしていない場合、いいねができること" do
expect do
post like_path(username: user.user_name, post_id: 1), xhr: true
end.to change(Like, :count).by(1)
end
このxhr: true
を書かないと下のエラーが出てしまいます。
ActionController::UnknownFormat:
LikesController#like is missing a template for this request format and variant.
request.formats: ["text/html"]
request.variant: []
xhr: true
を書くだけでテストがうまく通るのですが、調べてもすぐには分からず時間がかかってしまいました。
以上です!