2010-02-20 1 views
1

У меня есть помощник приложения, который определяет классы 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 

Что вас думать? ОК? Не в порядке?

Поскольку я получил один голос за НЕ ОК, я думал, что объясню немного больше. По какой-то причине категория возвращается нуль в тестах, несмотря на принадлежности, которые я мог бы включить ... Я решил, что могу провести обширные интеграционные тесты, чтобы проверить навигацию ...

ответ

1

Это не очень хорошая идея.

Функциональный тест должен воспроизводить почти ту же среду пользовательского запроса. Почему помощник не работает?

Кроме того, вы установили какой-либо модульный тест для проверки помощника? Возможно, помощник неисправен.

+0

Спасибо за совет. Я внес некоторые изменения в исходный вопрос, чтобы вы могли узнать больше о том, что я делаю. –