2012-01-16 36 views
-1

我们的应用程序已经在RFQ控制器(钢轨3.1.0),它是测试指标一个简单的例子:一个简单的Rspec的在轨检查控制指标不合格3.1.0

it "should be successful" do 
get 'index' 
response.should be_success 
end 

我们刚刚发现大小写因index.html.erb中的错误而失败(虽然之前它已通过)。的代码行是

<% @rfqs.each do |r| %> 

    <td><%= r.customer.short_name %></td> 

<% end %> 

错误是:

1) RfqsController 'index' should be successful 
Failure/Error: get 'index' 
ActionView::Template::Error: 
undefined method short_name' for nil:NilClass 
# ./app/views/rfqs/index.html.erb:28:inblock in _app_views_rfqs_index_html_erb__624673492_53806644' 
# c:in each' 
# c:ineach' 
# ./app/views/rfqs/index.html.erb:18:in _app_views_rfqs_index_html_erb__624673492_53806644' 
# ./spec/controllers/rfqs_controller_spec.rb:16:inblock (3 levels) in ' 

然而,该应用没有问题,以显示在索引页的SHORT_NAME。同样在rails控制台中,r.customer.short_name确实从customer表中返回短名称。

在RFQ模型,它具有关联关系:如果代码行变得

belongs_to :customer 

壳体将通过:r.customer_id,代替r.customer.short_name。有关这个问题的任何想法?谢谢。

更新:发现问题。它是由测试数据库中的垃圾记录引起的。清理测试分贝后,问题消失。

回答

1

你在哪里创建rfq.customer记录?是否有可能对客户模型进行了更改(添加了新的验证),以便现在没有创建记录?

+0

客户记录已创建并被拉入选择。创建rfq时,只有customer_id保存在rfq记录中。客户控制器没有变化。 customer_id已成功提取,并且找不到与customer_id关联的客户短名称 – user938363 2012-01-16 14:58:48

+0

您收到的错误表示无法找到客户,因为它为零。 – TDH 2012-01-17 16:02:16

+0

奇怪的是它可以找到customer_id和rspec通行证。 – user938363 2012-01-17 17:37:50