Alex
Alex

Reputation: 392

RSpec: Test if a method was called - wrong number of arguments (given 0, expected 1)

I have following action method of controller:

def update
    @membership.update(membership_params)

    if(@membership.admin)
      ProjectAssignments::RemoveProjectAssignmentsByUser.call!(user_id: membership.user_id, project_id: membership.project_id)
    end
    
    respond_with(@membership)
  end

I need test ProjectAssignments::RemoveProjectAssignmentsByUser.call! was called inside Update action.

I has written the test, but get error

it "should call interactor" do
        expect {
          put :update, params: update_params, as: :json
        }.to receive { :call! }.with(hash_including({user_id: membership.user_id, project_id: membership.project_id})
      end

Error - ArgumentError: wrong number of arguments (given 0, expected 1)

Upvotes: 0

Views: 685

Answers (1)

Mshka
Mshka

Reputation: 1828

it "should call interactor" do
  expect(ProjectAssignments::RemoveProjectAssignmentsByUser).to receive(:call!).with(
      user_id: membership.user_id, project_id: membership.project_id
  )
  # call the update method here
end

Upvotes: 2

Related Questions