Ruby 如何在RSpec模拟中使用动态值?

Ruby 如何在RSpec模拟中使用动态值?,ruby,rspec,mocking,Ruby,Rspec,Mocking,RSpec mock可以返回多个值 allow(die).to receive(:roll).and_return(1, 2, 3) 如何返回动态值,例如: allow(clock).to receive(:time).and_return Time.now.to_i 始终返回第一个值 是否可以让它为每次调用time计算表达式?只需删除并返回并传入块: allow(clock).to receive(:time) do Time.now.to_i end 对采取这种方法要谨慎。在测试中

RSpec mock可以返回多个值

allow(die).to receive(:roll).and_return(1, 2, 3)
如何返回动态值,例如:

allow(clock).to receive(:time).and_return Time.now.to_i
始终返回第一个值


是否可以让它为每次调用
time
计算表达式?

只需删除
并返回
并传入块:

allow(clock).to receive(:time) do
  Time.now.to_i
end

对采取这种方法要谨慎。在测试中出现不确定性行为可能会导致痛苦的调试问题。