我正在使用 HAML 助手来绘制菜单
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>/
)
我实际上做的是
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
但它不断收到以下错误:
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)>'
为什么? 我怎样才能让它按预期工作?
谢谢!