Ruby初学者です。
現在Rspecでポートフォリオのテストを書いています。
ご教授頂けますと幸いです。
【実現したいこと】
likes_controller_specのテストを通したい
【困っていること】
ブラウザ上ではいいねが反応するのですが、テストが通りません。
デバッガを差し込んでみてもlikes_controller
、likes_cotroller_spec
のどちらも値が入っていることを確認しています。
likes_controller_spec
require 'rails_helper' RSpec.describe LikesController, type: :controller do let!(:user) { create(:user) } let!(:post1) { create(:post, user: user) } let!(:like) { create(:like, user_id: user.id, post_id: post1.id) } describe "#create" do before do sign_in user end it "Ajexが反応する" do post :create, format: :js, params: { post_id: post1.id, id: like.id } expect(response.content_type).to eq 'text/javascript' end it "いいねに成功する" do expect { post :create, format: :js, params: { post_id: post1.id, id: like.id } }.to change(Like, :count).by(1) end end describe "#destroy" do before do sign_in user end it "Ajexが反応する" do delete :destroy, format: :js, params: { post_id: post1.id, user_id: user.id, id: like.id } expect(response.content_type).to eq 'text/javascript' end it "いいねの削除に成功する" do expect { delete :destroy, format: :js, params: { post_id: post1.id, user_id: user.id, id: like.id } }.to change(Like, :count).by(-1) end end end
エラー内容
Failure/Error: expect { post :create, format: :js, params: { post_id: post1.id, user_id: user.id } }.to change(Like, :count).by(1) expected #count to have changed by 1, but was changed by 0
likes_controller.rb
class LikesController < ApplicationController def create @like = current_user.likes.find_or_create_by(post_id: params[:post_id]) @likes = Like.where(post_id: params[:post_id]) @post = Post.find(params[:post_id]) end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/26 08:31
2018/12/26 08:52 編集
2018/12/26 09:32
2018/12/27 08:24
2019/01/08 03:48
2019/01/09 06:28