2010-02-20 21 views
1

我有一个应用程序助手,它决定了我的应用程序帮助程序顶部的导航栏的css类(选定或未选定)和链接地址。建议在rails的测试环境中禁用一些辅助方法吗?

当我测试我的控制器时,我得到了一大堆关于navbar的错误(变量返回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是我创建类似于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 

你这是什么认为?好?不好?

因为我不OK一票,我想我会解释一下。出于某种原因,尽管灯具我可能包括类别返回在测试零...我想我可以做广泛的集成测试,以测试导航栏...

回答

1

这不是一个好主意。

功能测试应该可以再现用户请求的几乎相同的环境。为什么帮手不工作?

另外,你是否设置了一些单元测试来测试助手? 也许帮手本身就是越野车。

+0

感谢您的意见。我在原始问题中做了一些编辑,以便您可以更多地了解我在做什么。 – 2010-02-20 17:28:39

相关问题