Ruby on rails 在开发中工作时,测试中未定义的方法“name”

Ruby on rails 在开发中工作时,测试中未定义的方法“name”,ruby-on-rails,ruby,ruby-on-rails-4,integration-testing,Ruby On Rails,Ruby,Ruby On Rails 4,Integration Testing,我在开发服务器上进行了一次失败的测试,它工作正常。测试生成错误: ActionView::Template::Error: undefined method `name' for nil:NilClass app/views/members/show.html.erb:15:in `_app_views_members_show_html_erb__387437852342830797_46300380' test/integration/site_layout_test.rb:18:in `b

我在开发服务器上进行了一次失败的测试,它工作正常。测试生成错误:

ActionView::Template::Error: undefined method `name' for nil:NilClass
app/views/members/show.html.erb:15:in `_app_views_members_show_html_erb__387437852342830797_46300380'
test/integration/site_layout_test.rb:18:in `block in <class:SiteLayoutTest>'
在“显示”视图中:

<div class="col-md-5">
  <p><b>Fullname </b> <%= @member.fullname %></p>
  <p><b>Organization </b> <%= link_to @organization.name, organization_path(@organization) %></p>
  <p><b>Email</b> <%= @member.email %></p>
  <p><b>Phone</b> <%= @member.phone %></p>
</div>

很简单,您的成员在测试中没有关联的组织。确保您的测试夹具在这些模型之间提供了正确的关系

似乎@organization不存在。听起来好像成员可能没有附加到它的组织。顺便说一句,这实际上导致了更严重的问题:缺少适当的模型关联。未附加关联的成员应在一致性检查阶段引发异常,而不是在此处。没错,应验证组织的存在性-也许是-通过验证。谢谢,在成员中,我通过:organization_id:1创建了关联。显然,这不起作用,我不得不根据fixture:organization:companyA中的组织fixture的名称来引用它。是的,组织的存在是经过验证的,但显然不在我的fixture中。也许确实是一个好主意,通过测试来开始测试,看看成员是否确实有一个与之关联的组织。
<div class="col-md-5">
  <p><b>Fullname </b> <%= @member.fullname %></p>
  <p><b>Organization </b> <%= link_to @organization.name, organization_path(@organization) %></p>
  <p><b>Email</b> <%= @member.email %></p>
  <p><b>Phone</b> <%= @member.phone %></p>
</div>
  def setup
    @member_admin     = orgusers(:one)
  end

  test "layout links" do
    log_in_as("member", @member_admin)
    get member_path(@member_admin)
  end