所以我有一个名为retry_with_timeout的方法的两个调用,它接受一个块并执行,直到该块返回true或nil以外的值(即false将导致循环)或直到发生超时
示例类:
def do_the_thing
retry_with_timeout(10, 5) do
case something
when 1
false
when 2
false
else
raise
end
end
retry_with_timeout(30, 10) do
case something_else
when 1
false
when 2
false
when 3
true
else
raise
end
end
end
Spec class:
it "should pass when the thing is 3" do
model = test_model #creates a double and stubs all of the necessary common methods
t_model.stub(:retry_with_timeout).with(10, 5).ordered
t_model.stub(:retry_with_timeout).with(30, 10).and_yield().ordered
expect { t_model.do_the_thing }.to be(true)
end
我收到错误,因为“3”情况不在第一个区块中,因此“else”被调用...
我需要跳过第一个并在第二个区块进行评估....我已经尝试了一切,我正在失去我的心灵!任何人都可以帮助我吗?
答案 0 :(得分:0)
好的,所以我已经回答了我自己的问题......原来有些功能没有记录......为了返回产量,必须按照以下方式进行:
t_model.stub(:some_method).and_return("Cool", "Awesome", and_yield(foo))
#Just for informations' sake
t_model.stub(:some_other_method).and_return("FOO", "BAR", raise_error)
由于某种原因,它被添加为退货商品, 在任何地方都没有记录!!!!!