En ce moment, si je lance ma suite de tests en utilisant rake spec
Je reçois une erreur:
1) SegmentsController GET 'index' devrait fonctionner Échec/erreur: obtenir 'index' Méthode non définie `locale 'pour # # ./Spec/controllers /segments_controller_spec.rb:14: dans `block (3 niveaux) in '
C'est normal car j'ai une erreur :)
Le problème est que la trace n'est pas très utile. Je sais que ça s'est cassé dans segments_controller_spec.rb
, ligne 14, mais c'est là que j'appelle le test:
### segments_controller_spec.rb:14
get 'index'
Je préférerais avoir la rupture de ligne réelle et la trace complète, pas la partie dans le dossier spec.
Courir avec --trace
n'aide pas.
Vous devez exécuter rspec avec -b
option pour voir les traces complètes
Une autre alternative (plus simple) consiste à modifier le .rspec
fichier et ajoutez l'option backtrace
. Cela devrait ressembler à ceci:
--colour
--backtrace
Cela vous donnera la trame complète. J'espère que cela t'aides.
Cela fonctionnera également:
# Rails_helper.rb
RSpec.configure do |config|
config.full_backtrace = true
end
Une autre approche consiste à supprimer tous les modèles d'exclusion de trace dans spec_helper.rb
. J'aime plus cette solution car je suis capable de conserver tous les paramètres RSpec en un seul endroit et de me débarrasser de .rspec file
ou explicite --backtrace
dans .travis.yml
.
# spec_helper.rb
RSpec.configure do |config|
config.backtrace_exclusion_patterns = []
end
Une autre option lorsque tout le reste échoue consiste simplement à ajouter un bloc de secours et à imprimer la pile. Essayez ou ajoutez-y une instruction de liaison obligatoire et utilisez show-stack
.
rescue Exception => e
puts ""
puts e.backtrace
puts ""
Je ne sais pas comment faire apparaître l'erreur du contrôleur dans rspec. Parfois, il apparaît, mais je ne sais pas quelles conditions le font apparaître. Voici cependant un moyen de voir l'erreur assez rapidement:
Ouvrez une autre session de terminal et exécutez:
tail -f log/test.log
Revenez ensuite à la session du terminal et exécutez uniquement la spécification qui contenait l'erreur:
bin/rspec -b spec/requests/posts/index_spec.rb
Retournez à la fin du journal et vous devriez voir l'erreur, espérons sans trop d'autres choses l'entourant (car vous avez exécuté le test d'échec par lui-même).