rspecでのエラーを解決したい
controllerのテストで発生した下記のエラーを解決したい
発生している問題・エラーメッセージ
1) Api::V1::CommentsController#create データベースに新しいコメントが登録されること Failure/Error: expect{ subject }.to change(Comment, :count).by(1) expected `Comment.count` to have changed by 1, but was changed by 0 # ./spec/controllers/api/v1/comments_controller_spec.rb:41:in `block (3 levels) in <main>'
comments_controller_spec.rb
describe "#create" do let(:params) { { comment: build(:comment).attributes } } subject { post :create, params: params } it "データベースに新しいコメントが登録されること" do expect{ subject }.to change(Comment, :count).by(1) end end
comments_controller.rb
def create @comment = Comment.create(comment_params) end private def comment_params params.require(:comment).permit(:profile_id, :post_id, :text) end end
spec/factories/comments.rb
FactoryBot.define do factory :comment do profile post{ create(:post, profile: profile) } text "hogehoge" end end
###アソシエーション
class Comment < ApplicationRecord belongs_to :post belongs_to :profile end class Post < ApplicationRecord belongs_to :profile end class Profile < ApplicationRecord has_many :posts, dependent: :destroy has_many :comments, dependent: :destroy end
ちなみにcreate(:comment)自体は通ります
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/06 05:34
2019/09/06 05:46
2019/09/06 06:43