我有这样的测试,在第一次运行后失败
it 'should have a login count of 1' do
... (creates a user with 'test@example.com' as the email)
expect(user.login_count).to eq 1
end
测试失败,因为每次运行它时,该用户仍然在数据库中并且登录计数不断增加。
login_count一直在递增,因为我的程序中找到或创建用户的方法,每次都会使login_count增加1
让测试认为每次运行时数据库都清晰的最佳方法是什么?
答案 0 :(得分:2)
为了在每次测试执行中在数据库中保持干净状态,您可能希望使用数据库清理器gem:https://github.com/DatabaseCleaner/database_cleaner
Rspec示例设置(从github中提取)
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end