Конфигурирование RSpec с новым приложением Rails / MongoID - PullRequest
8 голосов
/ 29 апреля 2011

Я запускаю новое приложение и замечаю некоторую недостающую документацию с момента последнего создания приложения MongoID с нуля.А именно, они предлагали на странице, которая больше не существует (http://mongoid.org/docs/integration/)), включать код для удаления коллекций MongoID (после тестов).

Это больше не упоминается на сайте ... это (**** ниже) больше не считается необходимым или хорошей практикой?!?

#spec/spec_helper.rb:
...
RSpec.configure do |config|

  config.mock_with :rspec

  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  #config.fixture_path = "#{::Rails.root}/spec/fixtures"

  # If you're not using ActiveRecord, or you'd prefer not to run each of your
  # examples within a transaction, remove the following line or assign false
  # instead of true.
  #config.use_transactional_fixtures = true

  # Below from <http://mongoid.org/docs/integration/>  ****
  config.after :suite do
    Mongoid.master.collections.select do |collection|
      collection.name !~ /system/
    end.each(&:drop)
  end
end

Ответы [ 3 ]

13 голосов
/ 07 сентября 2012

Это также, кажется, работает на Rails3 и более аккуратно

config.before :each do
  Mongoid.purge!
end

Для этого не требуется дополнительный GEM.

11 голосов
/ 29 апреля 2011

Измените файл spec / spec_helper.rb , чтобы добавить это:

RSpec.configure do |config|
  # Other things

  # Clean up the database
  require 'database_cleaner'
  config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
    DatabaseCleaner.orm = "mongoid"
  end

  config.before(:each) do
    DatabaseCleaner.clean
  end
end
2 голосов
/ 29 апреля 2011

Вы можете продолжать делать (хотя, возможно, переключиться на предыдущий пакет), что - драгоценный камень DatabaseCleaner хорош, хотя.

  config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end
...