Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: hatkirbyОтветов: 1

Я изучаю 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

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

ruby-on-railsruby-on-rails-3rspecrspec2

Ответы

Ответ 1 · рейтинг 2 · hatkirby

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы