【问题标题】:RSpec: Test if a method was called - wrong number of arguments (given 0, expected 1)RSpec:测试是否调用了方法 - 参数数量错误(给定 0,预期为 1)
【发布时间】:2021-04-13 20:52:04
【问题描述】:

我有以下控制器的操作方法:

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

我需要测试 ProjectAssignments::RemoveProjectAssignmentsByUser.call!在更新操作中被调用。

我已经写了测试,但是出现错误

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

错误 - 参数错误: 参数数量错误(给定 0,预期 1)

【问题讨论】:

  • receive 应该带一个符号,例如,receive(:call!)

标签: ruby-on-rails ruby rspec


【解决方案1】:
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

【讨论】:

  • 换行就好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
相关资源
最近更新 更多