現在Twitterライクなアプリケーションを作っています。
ユーザーは投稿をし、その投稿にコメントをすることができるといったものです。
今回のエラーはコメントをする際に発生します。
Rspecを実行した際のエラー
1) CommentsController POST #create parameter is reasonable is registered Failure/Error: post :create, params: { user_id: user.id, post_id: post.id, comment: valid_attributes }, session: {} ArgumentError: wrong number of arguments (given 2, expected 0) # ./spec/controllers/comments_controller_spec.rb:67:in `block (5 levels) in <top (required)>' # ./spec/controllers/comments_controller_spec.rb:66:in `block (4 levels) in <top (required)>'
関連するコードは以下のようになっています。
comments_controller_spec.rb
RSpec.describe CommentsController, type: :controller do let(:user) { FactoryBot.create(:admin_user) } before do log_in user end let(:post) { user.posts.create(FactoryBot.attributes_for(:post)) } let(:valid_attributes) { FactoryBot.attributes_for(:comment) } describe "POST #create" do context "parameter is reasonable" do it "is registered" do expect { post :create, params: { user_id: user.id, post_id: post.id, comment: valid_attributes }, session: {} }.to change(Comment, :count).by(1) end it "redirect post page" do post :create, params: { user_id: user.id, post_id: post.id, comment: valid_attributes }, session: {} expect(response).to redirect_to post end end end end
app/controllers/comments_controller.rb
def create @post = Post.find(params[:post_id]) @comment = current_user.comments.build(comment_params) @comment.post = @post if @comment.save flash[:success] = 'success in commenting' redirect_to post_url(params[:post_id]) else render 'new' end end
factories/comments.rb
FactoryBot.define do factory :comment, class: Comment do content 'a' * 140 user post end end
comments_controller#createにブレークポイントを設定してもデバッガが起動しないことからそれより前でエラーが起きてると思います。
情報量が少なくて申し訳ありませんが、もし似たような事例を経験したことある方がいらっやいましたら、お聞かせください。
以上、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/12 00:49