在我的应用我用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