2009-06-29 7 views
6

Parece que cuke no muestra el mensaje de error completo (al menos cuando se produce un problema en la plantilla), lo que hace que sea muy difícil localizar el problema.¿Cómo hacer que el pepino muestre el mensaje de error completo (rieles)?

Esto es lo que da salida en algún error:

 
... 
    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' 
... 

Y aquí es lo que los carriles de espectáculos cuando el mismo problema se reproduce en el navegador:

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> 

El primero es un poco demasiado limpio. No hay excepción en pepino.log tampoco. Y mi plantilla tiene pocos parciales y un diseño. Sin pistas, toda una investigación.

¿Hay algún enchufe secreto que extraer para que el pepino muestre un error completo?

+0

Tu título de pregunta habría sido una buena canción o título de episodio de serie de TV, pero no una pregunta de SO, así que modifiqué :) – karim79

Respuesta

8

La respuesta correcta (gracias a cuke google group) es usar la opción --backtrace al ejecutar pepino.

-1

Quizás no sea de mucha ayuda, pero el objeto @cart no parece haber sido instanciado. Revisa tu controlador para que así sea.

+1

El problema no es el error en sí, sino el hecho de que cuke no es útil . – artemave

+0

Perdón por eso. Bueno, casi tienes el error de Rails y el número de línea de la prueba. Uno podría pensar que el nombre de variable de nil in nil.Items podría haberse insertado allí de alguna manera, pero de lo contrario no sé qué esperar de Cucumber. –

1

Puede comentar la siguiente línea en sus características/support.env para usar el manejo de errores Rails.

Cucumber::Rails.bypass_rescue 

También es posible usar tail-f log/test.log para mantener un ojo en los registros.

Cuestiones relacionadas