Rspec:在类常量中使用外部依赖项时如何单独测试

时间:2014-10-12 06:48:57

标签: ruby unit-testing rspec

修改

事后来看,调用These::Encryption而不首先实际需要依赖关系是没有任何意义的,所以我得到的关于缺失常量的错误实际上是一个有效的错误。

关于These::Helpers - 可以选择性地要求 - 我 am 实际上可选地通过在rspec运行开始之前定义它来包含它。

我现在暂时打开这个问题,万一有人有更多的见解。


我的方法看起来像这样:

module My
  class Service
    extend Forwardable

    def_delegators :@helpers, *These::Helpers.delegatable if defined?(These::Helpers)

    ENCRYPTED_KEY_PASSWORD = These::Encryption.get('my_password')
  end
end

这取决于两个外部类helperencryption。但是,我想在完全隔离的情况下进行测试并将这两个进行测试,因为它们已在其他地方进行了测试。

我怎样才能在班级的背景下做到这一点?

我面临的问题是,当我require时,类会被加载,这会触发if defined?#get两种方法,但都失败了,因为我还没有有机会将这些课程及其所需的方法排除在外。

我使用的一个解决方案是在require语句之前简单地定义所需的方法:

require 'spec_helper'

module These
  class Helpers
    def self.delegatable
      [:attribute]
    end
  end
end

require 'service'

describe My::Service do
  ...
end

但这很快就会变得难以控制,而且此时我正在做RSpec的工作。

有没有更好的方法来解决这个问题?或者我应该接受在这种情况下,必须加载依赖项才能使测试工作?

0 个答案:

没有答案