Wenn ich jetzt meine Testsuite mit ausführe rake spec
, wird folgende Fehlermeldung angezeigt:
1) SegmentsController GET 'Index' sollte funktionieren Fehler / Fehler: 'Index' abrufen undefinierte Methode `locale 'für # # ./spec/controllers/segments_controller_spec.rb:14: in `Block (3 Ebenen) in '
Dies ist normal, da ich einen Fehler habe :)
Das Problem ist, dass die Ablaufverfolgung nicht sehr hilfreich ist. Ich weiß, dass es eingebrochen ist segments_controller_spec.rb
, Zeile 14, aber hier nenne ich den Test:
### segments_controller_spec.rb:14
get 'index'
Ich würde es vorziehen, den eigentlichen Zeilenumbruch und die vollständige Ablaufverfolgung zu haben, nicht den Teil im Spezifikationsordner.
Laufen mit --trace
hilft nicht.
Antworten:
Sie müssen rspec mit der
-b
Option ausführen , um vollständige Backtraces anzuzeigenquelle
Eine andere (einfachere) Alternative besteht darin, die
.rspec
Datei zu bearbeiten und diebacktrace
Option hinzuzufügen . Es sollte ungefähr so aussehen:Das gibt Ihnen die volle Rückverfolgung. Hoffe das hilft.
quelle
color
. Ich denke, wenn Sie es buchstabieren, könntecolour
ein Monty Python-Witz auftauchenDies wird auch funktionieren:
quelle
Ein anderer Ansatz besteht darin, alle Backtrace-Ausschlussmuster in zu löschen
spec_helper.rb
. Ich mag diese Lösung der meisten , wie ich bin in der Lage , alle RSpec Einstellungen an einem Ort zu halten und loswerden.rspec file
oder explizit--backtrace
in.travis.yml
.quelle
Ich weiß nicht, wie ich den Controller-Fehler in rspec anzeigen lassen kann. Manchmal taucht es auf, aber ich weiß nicht, unter welchen Bedingungen es auftaucht. Hier ist eine Möglichkeit, den Fehler ziemlich schnell zu erkennen:
Öffnen Sie eine andere Terminalsitzung und führen Sie Folgendes aus:
Kehren Sie dann zur Terminalsitzung zurück und führen Sie nur die Spezifikation aus, bei der der Fehler aufgetreten ist:
Gehen Sie zurück zum Ende des Protokolls und Sie sollten den Fehler sehen, hoffentlich ohne zu viele andere Dinge, die ihn umgeben (weil Sie den fehlgeschlagenen Test selbst ausgeführt haben).
quelle
Eine weitere Option, wenn alles andere fehlschlägt, besteht darin, einfach einen Rettungsblock hinzuzufügen und den Stapelversuch auszudrucken oder dort eine verbindliche Pry-Anweisung hinzuzufügen und zu verwenden
show-stack
.quelle
begin
undrescue
block als äußere Anweisung der Aktionsmethode des Controllers. Oder verwendenrescue_from
.git diff
bevor Sie es festlegen, um Ihren Speck zu schonen.