我有一个自制的服务类,它帮助我干掉发送推送通知,我希望能够存根属于该类的所有方法。
我在考虑像
这样的东西# 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
,但我不确定它是如何工作的。
有人可以帮忙吗?
答案 0 :(得分:2)
是的,stub_everything
已被弃用。
是的,您可以使用as_null_object
来存储测试中的所有内容,如下所示:
let(:push_service) { double(PushService).as_null_object }
使用as_null_object
时,您的对象将响应任何未实现的方法。它还允许您使用显式存根和明确的期望。
有关详细信息,请参阅Null object doubles文档。