簡體   English   中英

有沒有辦法在 RSpec 3 中存根特定類的所有方法?

[英]Is there a way to stub all methods of a particular class in RSpec 3?

我有一個自制的服務類,它幫助我完成推送通知的發送,我希望能夠存根屬於該類的所有方法。

我在想像

# 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 的as_null_object但我不確定它是如何工作的。

任何人都可以幫忙嗎?

是的, stub_everything已棄用。

是的,您可以像這樣使用as_null_object存根測試中的所有內容:

let(:push_service) { double(PushService).as_null_object }

當您使用as_null_object ,您的對象將響應任何未實現的方法。 它還允許您使用顯式存根和顯式期望。

有關更多信息,請參閱Null object doubles文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM