【问题标题】:how to do testing of rails layouts, when they call url_for当他们调用 url_for 时如何测试 Rails 布局
【发布时间】: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


【解决方案1】:

是的,将其存根非常有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2011-01-28
    相关资源
    最近更新 更多