这里有一个关于如何模拟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)进行存根(stub),并验证其参数?