我有一个测试布局的测试用例。它会查看是否存在或存在不同类型用户的某些链接(例如,管理员链接)。这工作正常,直到我们开始本地化我们的一些界面。
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
布局现在包含对<%= toggle_language%>的调用,它使用url_for生成类似当前的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 render命令可能采用:controller,:action,我可以指向一个有效的路径。我还没有找到这样的东西。
答案 0 :(得分:0)
是的,将其删除效果非常好。