我们的测试套件存在问题。之前创建的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