lib +初始化程序上的Rspec

时间:2017-11-24 13:09:55

标签: ruby-on-rails ruby rspec stub initializer

我试图测试我创建的lib。它使用初始化程序自动加载。

这就是我所拥有的

# config/initializer/my_lib.rb
MyLib.configure do |config|
  config.salt   = Rails.application.secrets.encrypted_salt
  config.secret = Rails.application.secrets.encrypted_secret
end

# lib/my_lib.rb
class MyLib

  class << self
    attr_accessor :configuration

    def config
      @configuration ||= Configuration.new
    end

    def configure
      yield(config)
      raise 'Salt not specified' unless config.salt
      raise 'Secret not specified' unless config.secret
    end
  end

  class Configuration
    attr_accessor :salt, :secret
  end
end

我希望在没有saltsecret的情况下进行测试,MyLib.configure会引发RuntimeError

我已经尝试过以下测试,但我认为我认为这个障碍

allow(described_class).to receive(:configure) do |&config|
  config.salt = nil
  config.secret = nil
end

在上一个示例中,|config||&config|都为nil提供了config值。

0 个答案:

没有答案