在 RSpec 测试中,需要在每个测试之前首先创建一个干净的数据库状态。这可以通过使用 DatabaseCleaner
gem 来实现。另外,确保在测试文件的顶部添加了 require 'rails_helper'
和 require 'spec_helper'
。
以下是一个示例代码:
spec_helper.rb
RSpec.configure do |config|
config.use_transactional_fixtures = false
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
test_spec.rb
require 'rails_helper'
RSpec.describe 'Test', type: :system do
before { create(:test) }
it 'should work' do
expect(Test.count).to eq(1)
end
end