Как протестировать link_to_unless_current в группе примеров представления RSpec

Я изучаю RSpec 2 с Rails 3, и пока все идет довольно хорошо, у меня возникла проблема с тестированием вспомогательной ссылки link_to_unless_current в представлении. То, что я пытался сделать, это использовать простой assert_select из спецификации представления, чтобы определить, создается ли ссылка в следующем частичном представлении (HAML):

%article.post{ :id => "post-#{post.id}" }
  %header.post-title
    %h2= link_to_unless_current post.title, post
  .post-content= raw post.body

Однако я не знаю, как заставить спецификацию представления распознавать, что означает «текущий», потому что это спецификация представления, и она проверяет только представление, а не запрос. Я знаю, что это было бы намного проще в спецификации контроллера, но я думаю, что я должен проверить, что представление делает в своей спецификации, и что перенос этого теста в спецификацию контроллера сильно запутает. Я спрашиваю: есть ли способ сообщить спецификации представления, возможно, в блоке «до», какая текущая страница? Кроме того, правильно ли я поступаю в отношении организации тестов? Должен ли этот тест по праву находиться в спецификации контроллера?


person hatkirby    schedule 21.10.2010    source источник


Ответы (1)


Неважно, я в конце концов понял это. Вы должны заглушить UrlHelper.current_page? и пусть он возвращает true, если переданные параметры URL-адреса соответствуют странице, которую вы хотите использовать в качестве текущей страницы:

view.stub("current_page?".to_sym) {|options| url_for(options) == post_path(@post) }

Я до сих пор не знаю, должен ли я делать тесты RSpec именно так, но, как бы то ни было, это работает. :П

person hatkirby    schedule 22.10.2010