次のヘルパーをテストする必要があります。
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
これはうまく機能します。ただし、 have_selector 呼び出しに :count オプションを追加すると、突然失敗します。その理由を理解できる人はいますか?