2011-06-10 67 views
5

我試圖設置Spork和水豚與TestUnit,並運行 到test.rb配置問題。Spork水豚,config.cache_classes衝突

的問題是,叉勺要求 config.cache_classes設置爲false,這樣不必重叉勺所有 時間運行測試時在模型中的變化可以 反映。

另一方面,水豚似乎需要將 config.cache_classes設置爲true,否則集成測試 似乎不起作用。

我只是在尋找任何可能的解決方案/解釋。 這個東西只存在於TestUnit中,或者這可能是一個 錯誤,我應該這樣報告它?任何幫助將大大 讚賞!

回答

3

我會推薦採取類似於this之一的方法。你會想要做的主要事情是設置你的config.cache_classes爲真,但迫使叉勺重新加載每個運行模式和依賴:

Spork.each_run do 
    ActiveSupport::Dependencies.clear 
    ActiveRecord::Base.instantiate_observers 
end if Spork.using_spork? 

希望這將允許cache_classes爲水豚是真實的,但它也將允許您的模型和觀察者在測試運行之間重新加載。

+0

我一直在尋找解決這個問題的辦法,我看到的只是說「嘗試這個」和「做類似」和「希望」的評論。不幸的是,這個答案沒有比其他問題更接近解決問題。 – 2011-09-01 23:28:06

1

我遇到了與spork和黃瓜類似的問題。我找到的解決方案是:

config.cache_classes = (ENV['DRB'] == 'true' ? false : true) 

spork設置DRB環境。我不認爲這是解決這個問題的最優雅的方法,但是如果水豚設置了一些env變量,那麼你可以使用它嗎?

+0

這就是我最終做的。當運行完整的測試套件時,cache_classes = false在其他地方引起了很大的痛苦,但是如果我運行spork,通常我會關注任務並添加調試等。即使使用上面的each_run添加,如果cache_classes被設置爲true ,spork只是不會爲我重新加載。 – 2012-01-30 23:14:27