我在努力拖延时间.现在在RSpec中,如下所示:

it "should set the date to the current date" do
    @time_now = Time.now
    Time.stub!(:now).and_return(@time_now)

    @thing.capture_item("description")
    expect(@thing.items[0].date_captured).to eq(@time_now)
end

执行此操作时,我会遇到以下错误:

 Failure/Error: Time.stub!(:now).and_return(@time_now)
 NoMethodError:
   undefined method `stub!' for Time:Class

知道为什么会这样吗?

推荐答案

根据您的RSpec版本,您可能希望使用更新的语法:

allow(Time).to receive(:now).and_return(@time_now)

RSpec Mocks 3.3

Ruby相关问答推荐

如何解密在 sjcl.js 中使用 ruby​​ 创建的 AES-256-GCM

仅在模块中列出方法?

你如何称呼 Ruby 中的 &: 运算符?

我如何判断哪些模块已混合到一个类中?

Ruby 中的字符串是可变的吗?

为什么 Matz Select 在 Ruby 中默认使字符串可变?

如何使用 yardoc 列出未记录的模块/类/常量/方法?

Ruby:获取不带扩展名的文件名

RSpec:每次指定对具有不同参数的方法的多次调用

从 1 开始循环

Jekyll - 找不到命令

将哈希转换为 struct

我的Ruby在哪里?

判断ruby中的字符长度

安装 Jekyll 时出错 - 本机扩展构建

如何判断变量是数字还是字符串?

Ruby 中的 each 和 collect 方法有什么不同

如何在 IRB 中重新加载脚本?

相当于 Ruby 的 cURL?

如何在文件夹及其所有子文件夹中搜索特定类型的文件