我正在从rspec 2.99升级到rspec 3.0.3,并已将实例方法转换为使用allow_any_instance_of,但还没有弄清楚如何存根类方法.我有这样的代码:

module MyMod
  class Utils
    def self.find_x(myarg)
      # Stuff
    end
  end
end

我的rspec 2测试是这样的:

MyMod::Utils.stub(:find_x).and_return({something: 'testing'})

Rspec 3是如何做到这一点的?

推荐答案

你应该这么做

allow(MyMod::Utils).to receive(:find_x).and_return({something: 'testing'})

go 看看doco Method stubs.

Ruby-on-rails相关问答推荐

未捕获语法错误:try 编辑TRIX时,请求的模块未在Rails 7.1中提供名为默认的导出(在youtube.js:1:8)

通过激励控制器正确更新Turbo帧信源

有没有一种方法可以点击一个按钮来冒泡到父元素?

如何判断字符串中是否包含列值

Rails 7 中的预编译

只允许用户在 Rails 中输入字母和数字

升级到 Rails 6.1.6.1 导致 Psych::DisallowedClass: 试图加载未指定的类:符号

Rails 3 - Select 包含?

在 Rails 中找不到关联问题

如果 URL 不存在,请将 http(s) 添加到 URL?

Ruby - ActiveRecord::ConnectionNotEstablished

如何在 Linux 上使用 Ruby 2.0 改进独角兽进程之间的内存共享

simple_forms 自定义数据属性

Rails 助手应该假设实例变量存在还是应该将它们作为参数接收?

如何独立测试模型的回调方法?

按周/月/等和 ActiveRecord 分组?

Rails 4模块的未初始化常量

Rails 3.1 中的 Rails.cache 错误 - TypeError: can't dump hash with default proc

Ruby 1.87 与 1.92 Date.parse

Rails - 邮件,将正文作为纯文本获取