2010-02-20 43 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

相關問題