我发现当我运行所有测试(大约20个文件)时,我的测试数据库并不会总是被清除,这意味着当整个套件都运行时我的测试会失败,而运行单个文件时我的测试会成功。 / p>
我发现规范开始时有些表不是空的。
例如:
require "rails_helper"
RSpec.describe AccountsWorkflow do
describe "initalizes" do
it "knows if it has children" do
expect(QbAccount.count).to eq(0) #QbAccount is ActiveRecord
[...] #fails with QbAccount.count =4
end
end
end
第一个期望失败,这意味着由于某些原因,必须有未删除先前测试中的行。我已经在数据库清理程序的许多文章中回顾了该设置,并在spec_helper.rb
中包含以下内容RSpec.configure do |config|
[other standard config settings]
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
我也有
config.use_transactional_fixtures = false
在rails.helper.rb中。为什么在测试开始时为什么我的测试表仍然不为空?