我正在尝试测试我创建的库。它会自动加载一个初始化器。
这是我所拥有的
# 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我想要测试的是,如果没有salt和secret,MyLib.configure将引发一个RuntimeError。
我试过下面的测试,但我想我还是坚持不下去了
allow(described_class).to receive(:configure) do |&config|
config.salt = nil
config.secret = nil
end在前面的示例中,|config|和|&config|都为config提供了nil值。
https://stackoverflow.com/questions/47474036
复制相似问题