У меня есть помощник приложения, который определяет классы css (выбранные или невыделенные) и адреса ссылок для навигационной панели в верхней части моего помощника приложения.Можно ли отключить некоторые вспомогательные методы в тестовой среде для рельсов?
Когда я тестирую свои контроллеры, я получаю целую кучу ошибок в отношении навигатора (переменные возвращают нуль). Поскольку navbar не имеет ничего общего с каждым отдельным контроллером, и он появляется на каждой странице, проще всего это сделать.
В помощнике приложения:
def navbar_method(category)
c = Category.find_by_name(category)
children = c.children.map {|child| child.name}
if category == "All"
if params[:id] == category || params[:category] == category
"on"
else
"off"
end
else
if params[:id] == category || children.include?(params[:id]) || params[:category] == category || children.include?(params[:category])
"on"
else
"off"
end
end
Вот отрывок из представления NavBar, где я использую метод nav_link еще один вспомогательный метод, который я создал похож на Nav класса. Это горизонтальное выпадающее меню:
В макетах/application.html.erb:
<li id="Home" class="<%= nav_class("All") %>"><%= nav_link("All") %>
<ul>
</ul></li>
<li id="Writing" class="<%= nav_class("Writing") %>"><%= nav_link("Writing") %>
<ul>
<li class="<%= nav_class("Educational") %>"><%= nav_link("Educational") %>
Поскольку все в этом методе появляется ноль, я просто сделал это:
def navbar_method(category)
unless Rails.env.test?
c = Category.find_by_name(category)
#see above
end
end
Что вас думать? ОК? Не в порядке?
Поскольку я получил один голос за НЕ ОК, я думал, что объясню немного больше. По какой-то причине категория возвращается нуль в тестах, несмотря на принадлежности, которые я мог бы включить ... Я решил, что могу провести обширные интеграционные тесты, чтобы проверить навигацию ...
Спасибо за совет. Я внес некоторые изменения в исходный вопрос, чтобы вы могли узнать больше о том, что я делаю. –