Тестирование помощников вида в Rails с RSpec - PullRequest
2 голосов
/ 23 августа 2010

Мне нужно проверить следующий помощник:

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 к вызову have_selector, который неожиданно завершится неудачей, кто-нибудь может помочь мне понять, почему это так?

Ответы [ 3 ]

5 голосов
/ 26 мая 2012

Полагаю, вы искали помощников have_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 голос
/ 23 августа 2010

Может быть, это поможет обработать HTML как XML?В этом случае эта ссылка может помочь.

Она определяет совпадение have_xml, которое может быть именно тем, что вам нужноХотя я понимаю, что было бы лучше, если бы have_tag тоже работал со строками.

0 голосов
/ 11 сентября 2010

Очевидно, что лучший способ сделать это - шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...