Ruby on rails 有没有办法在RSpec3中存根一个特定类的所有方法?

Ruby on rails 有没有办法在RSpec3中存根一个特定类的所有方法?,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我有一个自制的服务类,它帮助我减少推送通知的发送,我希望能够存根属于该类的所有方法 我在想类似的事情 # Service Class class PushService def self.send_message ... end def self.send_payment_confirmation ... end end 在我的规格测试中,我希望能够 RSpec.describe "blah" do before do allow(PushServ

我有一个自制的服务类,它帮助我减少推送通知的发送,我希望能够存根属于该类的所有方法

我在想类似的事情

# Service Class
class PushService
  def self.send_message
    ...
  end

  def self.send_payment_confirmation
    ...
  end
end
在我的规格测试中,我希望能够

RSpec.describe "blah" do
  before do
    allow(PushService).to receive_everything.and_return({})
  end

end
我环顾四周,发现stub_everything()似乎已被弃用,建议使用double的
作为\u null_对象
,但我不确定这是如何工作的


有人能帮忙吗?

是的,
stub\u所有东西都不推荐使用

是的,您可以使用
作为\u null\u对象来存根测试中的所有内容,如下所示:

let(:push_service) { double(PushService).as_null_object }
当您将
用作\u null\u object
时,您的对象将响应任何未实现的方法。它还允许您使用显式存根和显式期望


有关更多信息,请参阅文档。

这是如何工作的?您的代码可能正在直接使用
PushService
类。