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

标签 ruby rspec mocking

RSpec 模拟可以返回多个值。

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

如何返回动态值,例如:

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

总是返回第一个值。

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

最佳答案

只需删除 and_return 并传入 block :

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

关于ruby - 如何在 RSpec 模拟中使用动态值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134300/

相关文章:

ruby - 我如何需要一个 Ruby 文件?

ruby-on-rails - 禁用 ruby​​ on rails 作业进行测试

ruby-on-rails - 使用 RSpec 测试模块内部的类

python - 如何使用 unittest.mock.MagicMock 或 Mock 类模拟 `name` 属性?

unit-testing - Dart Angular 在单元测试中用模拟替换提供者

ruby - 升级到 ruby​​ 2.2.0 后的警告

ruby-on-rails - will_paginate 未在网络上显示...

ruby-on-rails - Rails/Haml 错误 : undefined method `-@' for "":String

ruby-on-rails - DHH 单元测试 : Is RSpec indeed needlessly complicated?

node.js - 如何用 Jest 模拟 express.Application?