現在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にブレークポイントを設定してもデバッガが起動しないことからそれより前でエラーが起きてると思います。
情報量が少なくて申し訳ありませんが、もし似たような事例を経験したことある方がいらっやいましたら、お聞かせください。
以上、よろしくお願いします。