minitest - 将任何参数传递给期望

时间:2014-07-15 16:42:18

标签: ruby minitest

我使用以下代码来模拟对类方法的调用:

def test_calls_update_profile_job_for_a_lead
  input = ContactInput.new valid_attributes

  mock = MiniTest::Mock.new

  use_case = CreateContact.new user, input, mock

  mock.expect(:perform_async, nil, [user.id, 1, ::Contact])

  use_case.run!

  assert mock.verify
end

问题在于我必须传递特定值 -

  

[user.id,1,:: Contact]

让测试通过。

有没有办法让我不必指定确切的值,或者至少可以约束参数是什么。我不想检查确切的参数,我只是想确保调用该方法。

1 个答案:

答案 0 :(得分:5)

根据docs

  

args 与使用大小写相等的预期args(即' ==='运算符)进行比较,允许更少的特定期望

例如,

mock = MiniTest::Mock.new
mock.expect(:perform_async, 'goodbye', [Integer, Integer, String])
puts mock.perform_async(1, 1, 'hello')  #=>goodbye 
puts mock.perform_async(1, 1, 1)  #=>MockExpectationError