ChatGPT解决这个技术问题 Extra ChatGPT

rspec 3 - 存根类方法

我正在从 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 方式是什么?


A
Arup Rakshit

你应该做

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

查看文档 Method stubs


我正在尝试实现这一点,但是当我编写该模拟然后编写 expect(Class.foo).to eq(bar) 时,我得到一个“错误数量的参数错误”,因为 foo 方法通常需要 2 个参数....但我只是希望它返回我放在存根里的东西
FWIW,这种形式会使我的红宝石解释器崩溃。但是,and_return 并不是严格需要的,可以省略。 (我的 ruby 解释器也不会崩溃。)
@sixty4bit 有没有理由不能用参数调用它?
@sixty4bit expect(Class.foo).to receive(bar).with(arg1, arg2).and_return({..object})

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅