Вот один хак из одной строки, который вы можете использовать, чтобы отбрасывать все таблицы после каждого теста:
Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop) # transactional fixtures hack for mongo
Или, как указал JP, гем чистых баз данных, кажется, хорошо работает для этого:*
В моих тестах гем database_cleaner был примерно на 4% быстрее, я полагаю, потому что он использует усечение вместо удаления таблиц.Вот пример файла spec_helper.rb
, который использует очиститель базы данных и rspec
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'capybara/rspec'
require 'database_cleaner'
DatabaseCleaner.strategy = :truncation
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :mocha
config.before(:each) do
DatabaseCleaner.clean
#Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop) # transactional fixtures hack for mongo
end
end