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