У меня есть помощник приложения, который определяет классы css (выбранные или невыбранные) и адреса ссылок для панели навигации в верхней части моего помощника приложения.
Когда я тестирую свои контроллеры, я получаю целую кучу ошибок относительно панели навигации (переменные возвращают ноль).
Поскольку панель навигации не имеет ничего общего с каждым отдельным контроллером и отображается на каждой странице, проще всего сделать это.
В приложении помощник:
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
Что ты думаешь? ОК? Не в порядке?
Так как я получил один голос за НЕ ОК, я подумал, что объясню немного больше. По какой-то причине категория возвращает ноль в тестах, несмотря на то, что я мог бы включить в нее данные ... Я подумал, что мог бы провести обширные интеграционные тесты для тестирования панели навигации ...