2015-04-30 48 views
1

下面的測試生成錯誤消息未定義的方法錯誤,但只有在測試

ActionView::Template::Error: undefined method `avatar?' for nil:NilClass 
app/views/members/index.html.erb:25:in `block in _app_views_members_index_html_erb___1876261578458959373_9315040' 
app/views/members/index.html.erb:22:in `_app_views_members_index_html_erb___1876261578458959373_9315040' 
test/integration/site_layout_test.rb:50:in `block in <class:SiteLayoutTest>' 

然而,在發展它似乎工作。頭像顯示是否存在。任何人都有關於原因的想法?

測試:

get users_path 
assert_template 'users/index' 
User.paginate(page: 1).each do |user| 
    assert_select 'a[href=?]', user_path(user) 

get organizations_path 
assert_template 'organizations/index' 
Organization.paginate(page: 1).each do |organization| 
    assert_select 'a[href=?]', organization_path(organization) 
end 

get members_path  # THIS IS LINE 50!! 
assert_template 'members/index' 
Member.paginate(page: 1).each do |member| 
    assert_select 'a[href=?]', member_path(member) 
end 

成員索引視圖包括:

<% @members.each do |member| %> # THIS IS LINE 22!! 
    <tr> 
    <td> 
     <% if member.organization.avatar? %>  # THIS IS LINE 25!! 
     <%= link_to image_tag(member.organization.avatar.url, alt: "Profile"), member_path(member) %> <%= member.username %> 
     <% else %> 
     <%= link_to image_tag("profile.gif", alt: "Profile"), member_path(member) %> <%= member.username %> 
     <% end %> 
    </td> 
    <td><%= member.fullname %></td> 
    etc... 

回答

2

這個錯誤意味着你已經試過打電話給avatar?nil

最有可能的原因是你有一個沒有組織的會員,因此member.organization的計算結果爲nil

+0

謝謝,的確是這樣的夾具滑倒了,通過它解決了這一錯誤消息。然而,出現了一個新的錯誤信息,爲此我會發佈一個新問題。 – Nick

0

刪除問號

a[href=?] 

應該

a[href] 
+0

我不認爲它應該是[href]。我在各種測試中都有[href =?],這些工作。另外railstutorial.org將它包含在各種測試中...... – Nick

+0

是的,'hef =?'是對的。問號是替代值的位置持有者,它是「assert_select」的第二個參數。即它檢查鏈接的「href」是「organization_path(organization)」 – mikej

相關問題