Если логика в ваших инициализаторах достаточно сложна, ее следует протестировать, вы должны извлечь ее в помощник, который можно изолировать и тестировать, не находясь в контексте инициализатора.
complex_initializer.rb
config.database.foo = calculate_hard_stuff()
config.database.bar = other_stuff()
Вы можете извлечь это в тестируемый помощник (lib / config / database.rb)
module Config::DatabaseHelper
def self.generate_config
{:foo => calculate_hard_stuff, :bar => other_stuff)
end
def calculate_hard_stuff
# Hard stuff here
end
end
... затем просто подключите данные конфигурации в инициализаторе
db_config_values = Config::DatabaseHelper.generate_config
config.database.foo = db_config_values[:foo]
config.database.bar = db_config_values[:bar]
... и проверить определение / расчет сложной конфигурации в отдельном тесте, в котором можно изолировать входы.
describe Config::DatabaseHelper do
describe '.calculate_hard_stuff' do
SystemValue.stubs(:config => value)
Config::DatabaseHelper.calculate_hard_stuff.should == expected_value
end
end