【发布时间】:2011-07-20 21:46:33
【问题描述】:
我有一个测试布局的测试用例。它会查看不同类型的用户(例如管理链接)是否存在某些链接。在我们开始本地化我们的一些界面之前,这一直很好。
describe "layouts/application" do
include Devise::TestHelpers
fixtures :users
it "renders admin link for admin user" do
@admin = users(:admin)
sign_in(@admin)
@locale = 'en'
render
rendered.should match(/Administration/)
end
end
布局现在包含对 的调用,它使用 url_for 生成与当前 URL 类似的 URL,但更改了 :locale 参数:
def toggle_language
case locale
when :fr
other=:en
when :en
other=:fr
else
other=:fr
end
link_to t(:other_language), url_for(:locale => other)
end
问题在于,由于我没有名为“布局”的控制器,因此 url_for 无法生成它需要的内容。
1) layouts/application renders admin link for admin user
Failure/Error: render
ActionView::Template::Error:
No route matches {:controller=>"layouts", :locale=>:fr, :action=>"application"}
我查看了 rspec 渲染命令是否会采用 :controller,:action,我可以将其指向有效路线。我还没有找到这样的东西。
【问题讨论】:
-
我在我的测试用例中添加了:view.stub(:toggle_language) { "/en/my/url" },我认为这是可行的。
标签: ruby-on-rails routing rspec