Rails / Rspec Views: правильный способ проверки партиалов - PullRequest
3 голосов
/ 28 марта 2011

У меня есть партиал Rails 3, который перечисляет все категории в виде меню навигации - он есть на большинстве, но не на всех страницах моего шаблона ... скажем, около 75%. Я пытаюсь проверить частичное (в RSpec) прямо сейчас, и я только что понял несколько вещей:

В данный момент я звоню Categories.all в реальном виде. Трудность заключается в том, что, поскольку это касается базы данных, мои макеты / заглушки в спецификации представления игнорируются, и, следовательно, тест не пройден.

Я предполагаю, что альтернативой является присвоение переменной в контроллере приложения, а затем передача ее в качестве локальной переменной частичному. Тем не менее, около 25% моих страниц не будут использовать переменную, и мне интересно, есть ли более изящный способ сделать что-либо.

Короче говоря, я хочу, чтобы спецификации представления проходили без прикосновения к тестовой БД, но я не уверен, что глобальная переменная, переданная моему частичному, является лучшим способом сделать это ... и я не объявляю переменную в каждый (и только) те контроллеры, которые в нем нуждаются.

Любые предложения приветствуются ...

1 Ответ

2 голосов
/ 30 июня 2011

Почему бы не создать вспомогательный метод для всех категорий?

  # in categories helper

def all_categories
  @all_categories ||= Category.all
end

Или ...

# application controller

helper_method :all_categories

def all_categories 
...

Затем вы можете отключить этот метод в своих спецификациях, и вы не будетеприкасаться к БД

...