我想在运行每个spec文件之前清除我的测试数据库。
我已经和工厂女孩一起使用rspec了。
谢谢, 野兔
答案 0 :(得分:3)
在spec_helper.rb
config.before(:suite) do
DatabaseCleaner.clean_with :truncation
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
块
extends Specification
必须工作
答案 1 :(得分:1)
在您的spec_helper.rb中, 在RSpec.configure块中
RSpec.configure do |config|
# ...
config.before(:suite) do
DatabaseCleaner.clean_with :transaction
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:all) do
DatabaseCleaner.start
end
config.after(:all) do
DatabaseCleaner.clean
end
# ...
end
before(:all)和after(:all)在每个spec文件中运行,而不是在整个套件之前和之后运行。因此,对于每个规格文件,您都可以使用以下三种策略之一来清除数据库:事务,:截断,:删除
答案 2 :(得分:0)
这就是我通常为DatabaseCleaner
# Database Cleaner
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
这将确保每个测试都有一个干净的数据库。