我想測試一個函數是否用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 –