我想测试一个函数是否用minitest Ruby正确调用其他函数,但是我找不到合适的assert
来测试doc。如何使用Ruby minitest框架调用某些方法?
class SomeClass
def invoke_function(name)
name == "right" ? right() : wrong()
end
def right
#...
end
def wrong
#...
end
end
测试代码:
describe SomeClass do
it "should invoke right function" do
# assert right() is called
end
it "should invoke other function" do
# assert wrong() is called
end
end
对于具体对象的版本,有'must_send'使用'MINITEST/spec' – Frost
告诉我时如果我错过了一些东西,但是我认为下面的@ jing-li的回答是正确的,在这里提到'assert_send'不适合。 OP要测试调用'invoke_function'时调用'right'。此外,需要'obj.verify'来确保在这个答案的第一部分的模拟对象上调用'right'。对于阅读此内容的任何人,请确保您的测试失败后再通过测试。 – monozok
我认为使用assert_send不是一个安全的选择。根据文档:http://ruby-doc.org/stdlib-2.0.0/libdoc/minitest/rdoc/MiniTest/Assertions.html#method-i-assert_send –