在我的應用我用SettingsLogic處理應用程序的設置(如Facebook令牌等),這是基本上解析配置/ application.yml文件,並提供方便地訪問其內容的寶石。Rails應用程序設置和測試
我已經也使用此配置文件來啓用或禁用整個應用國際化支持,爲應用程序更是一個核心的應用程序的許多孩子的應用程序。
所以我routes.rb中我做這樣的事情:
if Settings.i18n.enabled
match ':this', :to => 'that#place'
end
或者在模式:
if Settings.i18n.enabled
scope :for_current_locale, lambda { where(:locale => I18n.locale) }
end
我想測試應用程序如何響應兩種狀態:當i18n被關閉時以及打開時。
我的問題是,國家從配置文件中讀取時Rails的初始化。因此,當我運行我的測試時,我只能運行與i18n.enabled相關的測試爲false,然後更改我的配置文件並運行與i18n.enabled相關的測試爲true。
有沒有一些方法,我可以重新初始化2次測試的應用程序? (我正在使用Rspec) 或者我應該自動化運行兩個獨立的測試文件的兩種i18n情況的某種方式? 或者也許有更好的方法?
謝謝!
編輯
至於路線問題,我設法使規範通過改變我的設置並明確重新加載路線:
before(:all) do
Settings.i18n["enabled"] = true
My::Application.reload_routes!
end
但我仍覺得這是不理想的,並那麼在模型中定義的東西呢?在運行規格之前,我是否也可以重新加載我的模型?這不會像回調一樣重複嗎?
其實事實並非如此。由於在加載Rails之後執行之前/之後的塊。 – 2013-05-10 12:24:34