【发布时间】:2017-10-09 17:35:45
【问题描述】:
我有 2 个 _spec 文件:第一个包含单元测试,另一个包含一些集成测试。
通过指定文件名运行它们时,它们都是绿色的,而作为“rspec”运行它们时,它们中的 3 个都失败了。
我正在使用 database_cleaner gem 来清理每个测试周围的测试数据库。
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
我使用“let”实例化对象,使用 FactoryGirl 创建示例对象。
有没有人经历过这样的事情?
【问题讨论】:
-
在我看来,这听起来像是在测试之间没有正确重置数据库 - 您可能可以根据确切的故障来验证这种情况(即,如果您正在检查集合大小并且有多余的元素)。这也可能是测试之间的合理冲突 - 这取决于失败是什么,以及失败是否与顺序有关。
-
@oowowaee 我已经通过从 def 移动到 let 实例化对象来修复。现在按预期工作,DatabaseCleaner 也是如此
标签: ruby-on-rails unit-testing testing rspec integration-testing