假设我需要存根一个方法,以便返回当前时间: MyClass.stub(:my_method).and_return(Time.now.utc)
问题是,这个存根在存根声明时返回时间,而不是在我运行MyClass.new.my_method时。
有没有办法在调用方法时运行存根?
答案 0 :(得分:1)
将一个块传递给and_return
,它可以完成你想要在运行时完成的工作,就像这样......
describe MyClass do
it "runs at runtime" do
puts Time.now.utc
MyClass.stub(:my_method).and_return do
Time.now.utc
end
sleep 5.seconds
puts MyClass.my_method
end
end
答案 1 :(得分:0)
对于一个实例方法,我可以在接收之后添加一个块
allow_any_instance_of(MyClass)
.to receive(:method_name) do
executed_at_runtime
end.and_return(result_to_return)