テストスイートに問題があります。RSpecレコードが一見前に作成されました(:suite)このレコードをどのように追跡しますか?
スイート全体が起動するたびに、迷子記録が作成されます。
単一のファイルまたはスペックのコンテキストを実行するたびに、この迷子レコードは作成されません。
spec_helper.rbにconfig.before(:each) { puts "COUNT = #{Model.count}\n" }
と書きましたが、テストの実行順序に関わらず、このレコードは何とかしてそのまま残ります。例が始まる前の様子です。
データベースをシードするので、クリーンセットアップを試みました。私はすべてのテストを実行するたびに
RAILS_ENV=test rake db:setup
RAILS_ENV=test rake db:seed
echo "Model.count" | rails c test
=> 0
は、次に(順序をチェックしbefore(:all)
をチェック)。
rspec
COUNT = 1
.
COUNT = 1
.
COUNT = 1
.
etc
私は細心の注意を払ってspec_helper.rb(RSpec2、事前rails_helper.rb)を検討し、運を持つすべてのサポートファイルをコメントアウトしました。
私はこの時点でコードベースを疑っています。誰かがfind_or_create
の奇妙なコールバックか何かの後ろに残した何かを奇妙に呼び出すかもしれませんが、私は分かりません。私が知りたいのですがどのような
は次のとおりです。
- 私はスイートのスタートアップを破壊対処方法を教えてください。
- テストスイートのバックトレースを開始するだけですか?
- 誰でもRSpecのこの種の永続レコードを追い抜くことに成功しましたか?
EDIT
私はconfig.before(:suite) { debugger }
を追加し、レコードがまだこれの前に作成されます!
このコードをさらに細分化するにはどうすればよいですか?私は永続的な記録見つかったかの記録のために
[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