Rails: 如何确保数据库在测试后恢复到原始状态?
Rails: How do I ensure that the db reverts to its original state after tests?
我正在尝试编写一个涉及创建新用户的测试。但是,除了第一次之外,测试都失败了,因为用户在初始 运行.
之后永久保留在数据库中
require 'test_helper'
require 'minitest/autorun'
describe UserMailer < ActionMailer::TestCase do
it 'will send an email when a new user is created' do
original_mail_count = ActionMailer::Base.deliveries.count
User.create(email: "new_user@test.com", password: "password").save
ActionMailer::Base.deliveries.count.must_equal original_mail_count + 1
end
end
如何确保数据库returns在测试运行后恢复到测试前的状态?
使用database_cleanergem
用法示例:
# spec_helper.rb
RSpec.configure do |config|
config.before(:each) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
我正在尝试编写一个涉及创建新用户的测试。但是,除了第一次之外,测试都失败了,因为用户在初始 运行.
之后永久保留在数据库中require 'test_helper'
require 'minitest/autorun'
describe UserMailer < ActionMailer::TestCase do
it 'will send an email when a new user is created' do
original_mail_count = ActionMailer::Base.deliveries.count
User.create(email: "new_user@test.com", password: "password").save
ActionMailer::Base.deliveries.count.must_equal original_mail_count + 1
end
end
如何确保数据库returns在测试运行后恢复到测试前的状态?
使用database_cleanergem
用法示例:
# spec_helper.rb
RSpec.configure do |config|
config.before(:each) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end