我使用以下代码来模拟对类方法的调用:
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]
让测试通过。
有没有办法让我不必指定确切的值,或者至少可以约束参数是什么。我不想检查确切的参数,我只是想确保调用该方法。
答案 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