2009-06-29 5 views
6

On dirait que cuke n'affiche pas le message d'erreur complet (au moins lorsque le problème survient dans le modèle), ce qui rend la localisation du problème très difficile.Comment faire un message d'erreur concombre show full (rails)?

Voici ce qu'il envoie sur une erreur:

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

Et voici ce que les rails montre quand le même problème est reproduit dans le navigateur:

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> 

Le premier est un peu trop propre. Aucune exception dans cucumber.log non plus. Et mon modèle a quelques partiels et une mise en page. En l'absence d'indices, tout à fait une enquête.

Y at-il une fiche secrète à tirer pour obtenir le concombre afficher l'erreur complète?

+0

Le titre de votre question aurait fait une bonne chanson ou un titre d'épisode de série TV, mais pas une question SO, donc je l'ai modifié :) – karim79

Répondre

8

La bonne réponse (merci à cuke google group) utilise l'option --backtrace lors de l'exécution du concombre.

-1

Peut-être pas beaucoup d'aide, mais l'objet @cart ne semble pas avoir été instancié. Vérifiez votre contrôleur de sorte qu'il est.

+1

Le problème n'est pas le bug lui-même, mais le fait . – artemave

+0

Désolé à ce sujet. Eh bien, vous avez presque l'erreur Rails et le numéro de ligne du test. On pourrait penser que le nom de la variable de zéro dans nil.Items peut-être aurait pu être inséré là d'une manière ou d'une autre mais sinon je ne sais pas quoi attendre de plus de concombre? –

1

Vous pouvez commenter la ligne suivante dans votre features/support.env pour utiliser la gestion des erreurs Rails.

Cucumber::Rails.bypass_rescue 

Vous pouvez également utiliser tail -f log/test.log pour garder un œil sur les journaux.