J'ai un test plus ou moins comme ceci: j'ai délibérément ajouté un p> quelque part sur la route et Je reçois cette erreur: p> Quand je devrais avoir quelque chose: p> eces idées mes backtraces? Mon méfiant est de devoir parce que lorsque l'exception se produit à l'intérieur d'une configuration ou devrait se produire. P> Il s'agit d'un projet Rails 3, au cas où c'est important. P> P>
3 Réponses :
Je pense que cela vous donnera la backtrage que vous voulez. Je ne l'ai pas testé, mais cela devrait fonctionner:
def exclude_backtrace_from_location(location) begin yeild rescue => e puts "Error of type #{e.class} with message: #{e.to_s}.\nBacktrace:" back=e.backtrace back.delete_if {|b| b~=/\A#{location}.+/} puts back end end exclude_backrace_from_location("test/unit") do #some shoulda code that raises... end
Avez-vous vérifié Plus d'informations sur config / initialiseurs / backtrace_silencers.rb code>? C'est le point d'entrée pour personnaliser ce comportement. Avec
rails.backtrace_cleaner.remove_silencers! Code> Vous pouvez nettoyer la pile de silencieux. P>
ActiveSupportport :: BackTracecleaner Code> peut être trouvé ici . P>
c'est-à-dire parce que la méthode de l'appareil puis et une autre qui exécute p> Il convient de noter que cela ne contient pas non strud> générer un seul test exécutant toutes les trois étapes dans une séquence. p> Ces blocs de codes générés ont des noms de méthodes tels que #Context code> génère un code pour vous. Pour chaque bloc code> #vould code> Il génère un test complètement séparé pour vous, par exemple, par exemple
#vould (code> générera deux tests complètement indépendants ( pour les deux invocations de
#vould code>), une qui exécute p>
_Bind _ code> Quelque chose et le test généré ont un nom qui est une concaténation de tous les noms des contextes traversés au bloc code> de bloquer code> plus la chaîne fournie par le blocage de la requête (préfixée). Il y a Un autre exemple dans la documentation pour le contexte de DOIVEMENT . p> p>
Pourquoi cette augmentation-t-elle si vous voulez soulever une exception? Si c'est un test, ce n'est pas le format de faire.
@shingara je fais que je fais ça juste pour voir à quoi ça ressemble. Ce qui se passe vraiment, c'est que je reçois une exception de quelque part, une autre exception, mais je ne peux pas trouver où quelque chose cache la plus grande partie de la backtrace.
Tous StackTrace que vous rapportez provient de votre «Soulevez Blah». Donc je ne comprends pas votre vraiment problème
@shingara: Mon problème est que la trace de la pile lorsque l'erreur se produit dans une méthode appelée à partir de la configuration ou de ne pas contenir toutes les cadres jusqu'à la levée elle-même. form_definition_test.rb: 79 Nettère "bla", il est soulevé par une méthode appelée par une autre méthode appelée, comme vous pouvez le constater dans la deuxième trace de la pile.
@J. Pablo Fernandez: Si vous ajoutez un
élever "bla" code> afin de poster un exemple minimal (reproductible), nous l'apprécierions si vous pouviez poster un exemple minimal que nous pouvons nous courir (sans avoir Pour ajouter n'importe quel code »pour reproduire le problème.
J'ai aussi ce problème aussi. Avez-vous déjà compris?
Le problème qu'il tente de signaler est que cela devrait avoir l'impression d'avaler en quelque sorte les exceptions soulevées le long du test, caché ainsi leur trace de pile. Je rencontre le même problème.
Peut-être que les silencieux de la backtrace jouent avec vous. Lisez le commentaire dans Config / Initializers / Backtrace_Silencers.rb. Je supprime habituellement tous les nettoyants. Je peux vivre avec de longues backtraces.