1

我有一个应用程序助手,它确定我的应用程序助手顶部的导航栏的 css 类(选中或未选中)和链接地址。

当我测试我的控制器时,我收到一大堆关于导航栏的错误(变量返回 nil)。由于导航栏与每个单独的控制器无关,并且它出现在每个页面上,因此最容易做的事情似乎就是这个。

在应用程序助手中:

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

这是我使用方法 nav_link 的 Navbar 视图的片段,这是我创建的另一个帮助方法,类似于 nav 类。这是一个水平下拉菜单:

在 layouts/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") %>

由于此方法中的所有内容都弹出 nil,因此我只是这样做了:

def navbar_method(category)
unless Rails.env.test?
c = Category.find_by_name(category)
#see above
end
end

你怎么看?好的?不好?

因为我得到了一张“不好”的投票,所以我想我会再解释一下。出于某种原因,尽管我可能包含固定装置,但该类别在测试中返回 nil...我想我可以进行广泛的集成测试来测试导航栏...

4

1 回答 1

1

这不是一个好主意。

功能测试应该重现用户请求的几乎相同的环境。为什么助手不起作用?

另外,您是否设置了一些单元测试来测试助手?也许助手本身有问题。

于 2010-02-20T09:45:22.447 回答