Желательно ли отключить некоторые вспомогательные методы в тестовой среде для рельсов? - PullRequest
1 голос
/ 20 февраля 2010

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

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

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

1 Ответ

1 голос
/ 20 февраля 2010

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

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

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

...