如何让黄瓜显示完整(rails)错误信息?

时间:2009-06-29 21:49:36

标签: ruby-on-rails testing cucumber integration-testing

似乎cuke没有显示完整的错误消息(至少在模板中出现问题时),这使得很难找到问题。

以下是输出错误的内容:

 
...
    And I am on checkout page                                   # features/step_definitions/webrat_steps.rb:6
      You have a nil object when you didn't expect it!
      The error occurred while evaluating nil.items (ActionView::TemplateError)
      features/manage_orders.feature:9:in `And I am on checkout page'
...

以下是rails在浏览器中重现相同问题时显示的内容:

Showing app/views/cart/show.erb where line #46 raised:

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.items

Extracted source (around line #46):

43: </script>
44: 
45: <% ths = %w{th_title th_price th_subtotal th_quantity}.collect {|th| t th.intern} %>
46: <% table(@cart.items, ths) do |cart_item, style| -%>
47:   <tr class="<%= style %>">
48:       <td width="60%"><%=h cart_item.title %></td>
49:       <td width="20%"><%=number_to_currency cart_item.price %></td>

前者有点过于整洁。在cucumber.log中也没有例外。我的模板有很少的部分和布局。没有任何线索,相当调查。

是否有任何秘密插头可以让黄瓜显示完全错误?

3 个答案:

答案 0 :(得分:9)

正确答案(感谢cuke google group)在运行黄瓜时使用--backtrace选项。

答案 1 :(得分:1)

您可以在features / support.env中注释掉以下行以使用Rails错误处理。

Cucumber::Rails.bypass_rescue

你也可以使用tail -f log / test.log来关注日志。

答案 2 :(得分:-1)

也许帮助不大,但@cart对象似乎没有被实例化。检查你的控制器是否正确。