我想测试是否使用特定参数递归调用方法。
我的方法:
class Recursable
def rec(arg)
rec(7) unless arg == 7
end
end
describe Recursable do
it "should recurse" do
r = Recursable.new('test')
r.should_receive(:rec).with(0).ordered
r.should_receive(:rec).with(7).ordered
r.rec(0)
end
end
出乎意料的是,RSpec 失败了:
expected :rec with (7) once, but received it 0 times
知道我的方法有什么问题吗?如何使用特定参数测试有效递归?
最佳答案
您的测试现在的问题是您正在删除您尝试测试的方法。 r.should_receive(:rec)
将 r#rec
替换为 stub ,当然它不会调用 r.rec(7)
.
更好的方法是简单地测试初始方法调用的结果是否正确。该方法是否递归、迭代或给 friend 打电话并不严格,只要它最终给出正确答案即可。
关于ruby - Rspec:如何测试递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621842/