首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Test::Unit和.first方法

Test::Unit和.first方法
EN

Stack Overflow用户
提问于 2012-09-05 05:03:39
回答 1查看 56关注 0票数 0

我有个测试:

代码语言:javascript
复制
 def setup
    @cart = FactoryGirl.create(:cart_with_1_row)
  end

  test "should get show" do
    sign_in(FactoryGirl.create(:user, admin: true))
    FactoryGirl.create(:product_request)
    session[:cart_id] = @cart.id
    get :show, id: @cart.id
    assert_response :success
    assert_not_nil assigns(:product_requests)
  end

和一个控制器:

代码语言:javascript
复制
 def show
    cart = current_cart
    @product_requests = ProductRequest.find_all_by_cart_id(current_cart)
    cart.destroy
  end

除非我从我的视图中删除以下内容,否则此操作将失败:

代码语言:javascript
复制
<h6><%= @product_requests.first.user.first_name %> <%= @product_requests.first.user.last_name %></h6>
<h6><%= @product_requests.first.street %></h6>
<h6><%= @product_requests.first.city %>, <%= @product_requests.first.state %> <%= @product_requests.first.zip %></h6>

错误是:

代码语言:javascript
复制
  1) Error:
test_should_get_show(CartsControllerTest):
ActionView::Template::Error: undefined method `user' for nil:NilClass

这意味着在.first上调用用户就是在创建它?该页面在开发和生产环境中运行良好。

作为一个健全的检查,我在ivar上的each方法中放入了<%= product_request.user.first_name %>,这是有效的。我是否正确地理解了.first是问题所在?

有问题的视图如下所示:

代码语言:javascript
复制
<h6><%= @product_requests.first.user.first_name %> <%= @product_requests.first.user.last_name %></h6>
    <h6><%= @product_requests.first.street %></h6>
    <h6><%= @product_requests.first.city %>, <%= @product_requests.first.state %> <%= @product_requests.first.zip %></h6

<% @product_requests.each do |product_request| %>
<%= product_request.user.first_name %>
<% end %>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-05 05:17:24

这里的问题是@product_requests是空的,所以@product_requests.first返回nil,而nil.first确实是问题所在。

我建议您验证current_cart本身不是零-这是我对原因的猜测。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12271334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档