【问题标题】:stub all methods called on a class存根类上调用的所有方法
【发布时间】:2013-12-17 18:25:09
【问题描述】:

在我的一项测试中,我需要完全禁用对给定类的所有调用,因此我做了以下操作:

  ApiClass = double("api_class").as_null_object

它工作正常,但是我现在收到以下警告:

~/my_project/spec/models/mymodel_spec.rb:141:warning: already initialized constant ApiClass
~/my_project/app/models/api_class.rb:2:warning: previous definition of ApiClass was here

什么是不会引起这些警告的替代方法?

ps。我刚刚意识到我所做的是完全错误的,因为它实际上用全局上下文中的存根替换了所有测试的类,除非我在执行测试后恢复类。

【问题讨论】:

标签: ruby-on-rails rspec mocking double


【解决方案1】:

您可以使用stub_const(在https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/stubbing-constants 中描述)来避免这些警告,如下所示:

stub_const("ApiClass", double("api_class").as_null_object)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多