4
我想运行一个rspec before
块来设置一些内容之前 Rails初始化器运行,所以我可以测试初始化器应该做什么。这可能吗?在Rails初始化器运行之前运行rspec“之前”块
我想运行一个rspec before
块来设置一些内容之前 Rails初始化器运行,所以我可以测试初始化器应该做什么。这可能吗?在Rails初始化器运行之前运行rspec“之前”块
如果您初始化的逻辑是够复杂的,应当进行测试,你应该将其解压缩到您可以隔离和测试,而不在初始化的背景下是一个帮手。
complex_initializer.rb
config.database.foo = calculate_hard_stuff()
config.database.bar = other_stuff()
你可以提取到一个可测试的帮手(LIB /配置/ 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
什么是你想测试的初始化?你可以只新了有问题的对象上自己? https://github.com/rspec/rspec-rails – Travis
我们的代码读取外部文件,并基于其内容的变量:如果需要,我想你可以随时深入到源。这发生在初始化器中。我想要进行测试,以确保它读取文件,设置var以及处理丢失文件的情况等。我可以做很多hackery来假装事情正在发生,但是我可以更接近实际操作(即最小的hackery)越好。最好的办法是能够创建运行初始化之前的文件,但我不能似乎能够做到这一点。 – Pistos