我的 foo_controller_spec.rb 中有 30 个规范,当我使用规范运行整个文件时,我得到 4 个失败和 2 个待处理。当我单独运行 4 个失败的规范时,其中 3 个仍然失败,但其中一个通过了。起初我认为这是一个数据库问题,数据在运行之间没有被正确清理。所以我安装了database_cleaner(http://github.com/bmabey/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
现在,当我运行规范时,我可以看到每个规范之间的表被截断,因此我知道它正在工作,但是当与所有其他规范一起运行时,该规范仍然失败,但单独运行时会通过。我在这里缺少什么?
我有完全相同的问题并且是离开我的脑海!
我像这样跟踪了这个问题(使用 Textmate):
在项目抽屉中选择文件(多个文件),然后转到“Bundles > Rspec > Run Examples in selected files/directories”。
诀窍是找到哪个文件对其他文件造成干扰。
对我来说,它是在一个文件中更改 I18n.locale 导致所有其他示例的区域设置发生更改!
我为此失去了几个小时的疯狂......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)