rspec 3 - 存根类方法

Pet*_*kas 88 ruby rspec ruby-on-rails rspec3

我从rspec的2.99升级到3.0.3 RSPEC和具有转换实例方法使用allow_any_instance_of,但还没有想出如何存根类方法.我有这样的代码:

module MyMod
  class Utils
    def self.find_x(myarg)
      # Stuff
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我的rspec 2测试做到了这一点:

MyMod::Utils.stub(:find_x).and_return({something: 'testing'})
Run Code Online (Sandbox Code Playgroud)

什么是Rspec 3的做法?

Aru*_*hit 161

你应该做

allow(MyMod::Utils).to receive(:find_x).and_return({something: 'testing'})
Run Code Online (Sandbox Code Playgroud)

查看doco 方法存根.

  • @ sixty4bit是否有理由无法使用参数调用它? (2认同)
  • @ sixty4bit`expect(Class.foo).to接收(bar).with(arg1,arg2).and_return({.. object})` (2认同)