【发布时间】:2019-01-03 20:03:35
【问题描述】:
这是一个关于模拟module Email 类方法的小例子。方法名为connect_and_send:
require 'minitest/autorun'
module Email
def self.connect_and_send(*args)
nil
end
end
class Test < Minitest::Test
def test_it
fake = Minitest::Mock.new
fake.expect :connect_and_send, nil, ['a', 'b', 'c']
Email.stub :connect_and_send, fake do
Email.connect_and_send 'a', 'b', 'z'
end
fake.verify
end
end
该示例旨在验证方法及其参数是否被调用。
但它会产生一条错误消息,提示 connect_and_send 是预期的,但没有被调用!
1) Error:
Test#test_it:
MockExpectationError: expected connect_and_send("a", "b", "c") => nil
-:14:in 'test_it'
1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
相反,我认为它会产生一条错误消息,指出方法 (connect_and_send) 的参数不正确。
使用 Minitest,我如何使用 mock 存根并验证其参数?
【问题讨论】:
标签: ruby mocking arguments minitest stubbing