测试评论控制器。我无法通过创建评论的测试

时间:2021-07-26 10:15:13

标签: ruby-on-rails rspec rspec-rails

我想测试评论控制器,动作创建,但我不知道它有什么问题。测试不保存评论

comments_controller.rb 在我的项目中工作,我可以通过 rails 控制台看到所有评论(就像 Comments.all。所以有效:


    class CommentsController < ApplicationController
  before_action :authenticate_user!, only:[:create,:vote]
  before_action :show, only:[:show,:vote]
  respond_to :js, :json, :html

  def create
    @comment = Comment.new(comment_params)
    @comment.user_id = current_user.id
    if @comment.save
      redirect_to post_path(@comment.post.id)
      else
        redirect_to root_path
      end
    end

  private

  def comment_params
    params.require(:comment).permit(:comment, :post_id)
  end

end

comments_controller_spec.rb 在这里。好像我发送了错误的参数

    require 'rails_helper'
RSpec.describe CommentsController, type: :controller do
  let(:user) {create :user}
  let(:params) { {user_id: user} }

  before {sign_in user}

  describe '#create' do
    let(:post) {create :post}
    let(:params) do
      {
        user_id: user.id,
        post_id: post.id,
        comment: attributes_for(:comment)
      }
    end

    subject {process :create, method: :post, params: params}


    it 'create comment' do
      expect{subject}.to change {Comment.count}.by(1)
      # is_expected.to redirect_to(user_post_path(assigns(:user), assigns(:post)))
    end

    end
end

工厂评论.rb 在这里:

FactoryBot.define do
  factory :comment do
    association :post
    association :user
    user_id { FFaker::Internet.email }
    comment { FFaker::Lorem.sentence }

  end
end

0 个答案:

没有答案