单个规格在单独运行时通过,但在运行所有规格时失败

Jas*_*son 6 testing rspec ruby-on-rails

我的foo_controller_spec.rb中有30个规格,当我使用spec运行整个文件时,我得到4个失败,2个待定.当我单独运行4个失败的规格时,其中3个仍然失败,但其中一个通过.起初我认为这是一个数据库问题,在运行之间没有正确清理数据.所以我安装了database_cleaner(http://github.com/bmabey/database_cleaner)并将此代码添加到我的spec_helper:

config.before(:suite) do
  DatabaseCleaner.strategy = :truncation
  DatabaseCleaner.clean_with(:truncation)
end

config.before(:each) do
  DatabaseCleaner.start
  Sham.reset
  login
end

config.after(:each) do
  DatabaseCleaner.clean
end
Run Code Online (Sandbox Code Playgroud)

现在,当我运行我的规格时,我可以看到每个规格之间的表都被截断,所以我知道它正在工作,但是当使用所有其他规格运行时规范仍然失败但是当单独运行时传递.我在这里错过了什么?

Mir*_*rko 6

我有完全相同的问题,并且我的想法!

我跟踪了这​​个问题(使用Textmate):在项目抽屉中选择文件(多个文件),然后转到"Bundles> Rspec>在所选文件/目录中运行示例".

诀窍是找出哪个文件正在干扰他人.

对我来说,它是在一个文件中更改I18n.locale,导致所有其他示例的区域设置被更改!

我失去了几个小时的坚果......