Как заставить огурец показывать полное (rails) сообщение об ошибке? - PullRequest
8 голосов
/ 30 июня 2009

Похоже, что 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 ]

9 голосов
/ 02 июля 2009

Правильный ответ (благодаря cuke google group) использует опцию --backtrace при запуске огурца.

1 голос
/ 25 июля 2009

Вы можете закомментировать следующую строку в файле functions / support.env, чтобы использовать обработку ошибок Rails.

Cucumber::Rails.bypass_rescue

Вы также можете использовать tail -f log / test.log, чтобы следить за журналами.

0 голосов
/ 30 июня 2009

Возможно, это не сильно поможет, но объект @cart, похоже, не был создан. Проверьте свой контроллер, чтобы он был.

...