ste*_*ang 27 ruby testing unit-testing minitest
我想测试一个函数是否使用minitest Ruby正确调用其他函数,但是我找不到适合assert从doc测试的函数.
class SomeClass
def invoke_function(name)
name == "right" ? right () : wrong ()
end
def right
#...
end
def wrong
#...
end
end
Run Code Online (Sandbox Code Playgroud)
测试代码:
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
Run Code Online (Sandbox Code Playgroud)
nas*_*nas 24
使用minitest,您可以使用expect方法来设置在模拟对象上调用方法的期望
obj = MiniTest::Mock.new
obj.expect :right
Run Code Online (Sandbox Code Playgroud)
如果要使用参数设置期望值并返回值,则:
obj.expect :right, return_value, parameters
Run Code Online (Sandbox Code Playgroud)
对于像这样的具体对象:
obj = SomeClass.new
assert_send([obj, :right, *parameters])
Run Code Online (Sandbox Code Playgroud)
jva*_*nen 17
Minitest有一个特殊.expect :call用于检查是否调用了某个方法.
describe SomeClass do
it "should invoke right function" do
mocked_method = MiniTest::Mock.new
mocked_method.expect :call, return_value, []
some_instance = SomeClass.new
some_instance.stub :right, mocked_method do
some_instance.invoke_function("right")
end
mocked_method.verify
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个功能没有很好地记录.我从这里找到了它:https://github.com/seattlerb/minitest/issues/216
| 归档时间: |
|
| 查看次数: |
18614 次 |
| 最近记录: |