我需要测试以下帮助器:
def display_all_courses
@courses = Course.all
output = ""
for course in @courses do
output << content_tag(:li, :id => course.title.gsub(" ", "-").downcase.strip) do
concat content_tag(:h1, course.title)
concat link_to("Edit", edit_course_path(course))
end
end
return output
end
我想知道是否有办法可以测试它的输出。基本上,我只是想测试帮助器给我正确数量的li元素,也许是没有任何课程的情况。
我的第一个想法是做这样的事情:
describe DashboardHelper do
describe display_all_courses do
it "should return an list of all the courses" do
7.times{Factory(:course)
html = helper.display_all_courses
html.should have_selector(:li)
end
end
end
这很好用。但是,如果我将:count选项添加到has_selector调用它突然失败,有人可以帮我找出原因吗?
答案 0 :(得分:5)
我相信你要找的是has_tag和with_tag RSpec助手
describe DashboardHelper do
describe display_all_courses do
it "should return an list of all the courses" do
7.times{ Factory(:course) }
helper.display_all_courses.should have_tag('ul') do
with_tag('li', 3)
end
end
end
end
答案 1 :(得分:1)
也许它可以帮助将html视为xml? 在这种情况下,this link可以提供帮助。
它定义了匹配器have_xml
,它可能正是您所需要的。
虽然我知道如果have_tag
也能用于字符串会更好。
答案 2 :(得分:-8)
显然,模板是执行此操作的最佳方式。