【问题标题】:How to use dynamic values with RSpec mocks?如何在 RSpec 模拟中使用动态值?
【发布时间】:2015-05-08 23:32:03
【问题描述】:

RSpec 模拟可以返回多个值。

allow(die).to receive(:roll).and_return(1, 2, 3)

如何返回动态值如:

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

总是返回第一个值。

是否可以让它评估每次调用time 的表达式?

【问题讨论】:

  • 谨慎使用这种方法。在您的测试中出现不确定的行为可能会导致令人痛苦的调试问题。

标签: ruby rspec mocking


【解决方案1】:

只需删除 and_return 并传入块:

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

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2013-07-06
    相关资源
    最近更新 更多