我們的測試套件存在問題。之前創建的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中的這種持久記錄?
編輯
我加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