在我application_controller,我有下面的一组包括由url_for生成的所有路径的语言环境:如何设置功能测试(Rails)的区域default_url_options
def default_url_options(options={})
{ :locale => I18n.locale }
end
我的资源路径则有:串流中删除= “/:locale”
在网站上正常工作。
但是,当涉及到我的功能测试中,:区域不与生成的URL传递,因此他们都失败。我可以通过添加区域设置的URL在我的测试中,像这样绕过它:
get :new, :locale => 'en'
但我不希望有区域设置手动添加到每一个功能测试。
我尝试添加了default_url_options DEF以上test_helper,但它似乎没有任何效果。
有没有什么办法可以改变default_url_options以包括了所有的考试的语言环境?
谢谢。
谢谢,约翰。这解决了上面的具体情况,似乎很好! 它似乎并没有解决的问题是TestCase如何解释命名路由,无论它们是在测试本身中,还是在应用程序中使用。例如,如果我有一个测试: redirect_to homepage_url 和homepath_url需要语言环境(map.homepage'/:locale',:controller =>'home'),当运行测试时出现错误, URL要求不满意(缺少“区域设置”)。再次,应用程序运行良好,因为default_url_options负责添加区域设置。有什么办法解决这个问题? – 2010-01-01 03:27:48
我想补充一句,如果这只是测试本身的一个问题,那就不会那么糟糕。无论何时在测试中使用命名路由,我都可以添加区域设置。但问题是,无论何时在我的应用程序中使用命名路由时,它也会生成一个错误(并且我不希望每次都改变所有这些或指定区域设置,这样我的测试将运行)。 – 2010-01-01 03:34:22
啊,我没有意识到它也发生在你的应用中。我刚刚遇到了一张灯塔,可能会帮助你一点点(似乎仍然是一个问题,但有一些解决办法)https://rails.lighthouseapp.com/projects/8994/tickets/1251-default_url_options-cant -be-used-named-routes – 2010-01-02 01:23:45