首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec2测试HAML助手

RSpec2测试HAML助手
EN

Stack Overflow用户
提问于 2012-07-15 21:02:18
回答 1查看 275关注 0票数 0

我正在使用HAML助手来绘制菜单

代码语言:javascript
复制
module ApplicationHelper
  def draw_menu
    items = %w[
      item1
      item2
    ] # community

    capture_haml do
      haml_tag :nav, :class => "main-menu" do
        haml_tag :ul do
          items.each do |item|
            css_class = nil
            css_class = "first-item" unless item != items.first
            css_class = "last-item" unless item != items.last

            haml_tag :li, :class => css_class do
              haml_concat link_to t("nav.#{item}")
            end
          end
        end
      end

      haml_tag :div, :class => "clearize"
    end
  end
end

我正在尝试测试它(我想要匹配预期的输出为/<nav class='main-menu'>\s*<\/nav><div class='clearize'><\/div>/)

我实际上做的是

代码语言:javascript
复制
require "spec_helper"

describe ApplicationHelper do

  before(:all) do
    init_haml_helpers
  end

  it "should draw a menu" do
    draw_menu().should_not be_empty
  end

end

但是它不断地得到以下错误:

代码语言:javascript
复制
1) ApplicationHelper should draw a menu
   Failure/Error: draw_menu().should_not be_empty
   ActionController::RoutingError:
     No route matches {}
   # ./app/helpers/application_helper.rb:20:in `block (5 levels) in draw_menu'
   # ./app/helpers/application_helper.rb:19:in `block (4 levels) in draw_menu'
   # ./app/helpers/application_helper.rb:14:in `each'
   # ./app/helpers/application_helper.rb:14:in `block (3 levels) in draw_menu'
   # ./app/helpers/application_helper.rb:13:in `block (2 levels) in draw_menu'
   # ./app/helpers/application_helper.rb:12:in `block in draw_menu'
   # ./app/helpers/application_helper.rb:11:in `draw_menu'
   # ./spec/helpers/application_helper_spec.rb:10:in `block (2 levels) in <top (required)>'

为什么?我怎样才能使它像预期的那样工作呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-16 08:46:22

如果您调用link_to只传递一个字符串作为该参数,那么该字符串将用作链接文本。链接的目标是由当前操作和控制器提供的:url_for (底层助手)只是将您给出的参数与构成当前操作的参数合并。这就是为什么

代码语言:javascript
复制
link_to 'something', :action => :an_action

生成一个指向呈现视图的控制器的an_action方法的链接。

在助手规范中,这个环境不存在:没有当前的操作或控制器,所以这是行不通的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11495593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档