Unsere Testsuite hat ein Problem.RSpec-Datensatz, der scheinbar erstellt wurde (: suite) Wie kann ich diesen Datensatz nachverfolgen?
Immer wenn die ganze Suite gestartet wird, wird ein streunender Datensatz erstellt.
Immer wenn ich eine einzelne Datei oder einen Kontext mit Spezifikationen ausführe, wird dieser Datensatz nicht erstellt.
Ich schrieb in spec_helper.rb und egal in welcher Reihenfolge die Tests liefen, dieser Datensatz besteht irgendwie weiter. Scheinbar bevor die Beispiele überhaupt angefangen haben.
Wir seed unsere Datenbank, also versuchte ich eine saubere Einrichtung. Dann
RAILS_ENV=test rake db:setup
RAILS_ENV=test rake db:seed
echo "Model.count" | rails c test
=> 0
, wenn ich alle Tests laufen (markiert den Auftrag und überprüft before(:all)
).
rspec
COUNT = 1
.
COUNT = 1
.
COUNT = 1
.
etc
Ich habe sorgfältig geprüft spec_helper.rb (RSpec2, pre rails_helper.rb) und aus ohne Glück jede Unterstützung Datei kommentiert.
Ich vermute die Code-Basis an diesem Punkt, vielleicht einige seltsame Anruf an etwas, wo jemand eine find_or_create
, einen seltsamen Rückruf oder etwas zurückgelassen hat, habe ich keine Ahnung.
Was würde ich gerne wissen, ist:
- Wie kann ich tackle brechen die Suiten unten beim Start?
- Kann ich ein Backtrace meiner Testsuite starten?
- Wer ist erfolgreich diese Art von persistenten Datensatz in RSpec gejagt?
EDIT
Ich habe config.before(:suite) { debugger }
und der Datensatz noch bevor diese erstellt wird!
Wie kann ich diesen Code noch weiter aufschlüsseln?
[23, 32] in /Users/yourname/.rvm/gems/[email protected]/gems/rspec-core-2.14.6/lib/rspec/core/command_line.rb
23 @world.announce_filters
24
25 @configuration.reporter.report(@world.example_count, @configuration.randomize? ? @configuration.seed : nil) do |reporter|
26 begin
27 @configuration.run_hook(:before, :suite)
=> 28 @world.example_groups.ordered.map {|g| g.run(reporter)}.all? ? 0 : @configuration.failure_exit_code
29 ensure
30 @configuration.run_hook(:after, :suite)
31 end
32 end
(rdb:1) ModelName.count
1