Я использую гем Fabrication-gem с DatabaseCleaner и Mongoid ORM в тестах RSpec. Вот мои скрипты:
spec/support/database_cleaner.rb
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.clean_with(:truncation)
end
end
spec/fabricators/client_fabricators.rb
Fabricator(:client) do
auth_id { (SecureRandom.hex)[0..3] }
base_url { Faker::Internet.url }
end
Наконец, spec/requests/clients_spec.rb
before(:all) do
DatabaseCleaner.start
@clients = Fabricate.times(2, :client)
end
after(:all) do # Use after :all so data stays around until the end of the block
DatabaseCleaner.clean
end
it {...}
it {...}
...
К сожалению, я получаю столько ошибок, сколько у меня it {...}
блоков в моем context
, и все с одним и тем же сообщением об ошибке от Mongoid:
Failure/Error: @clients = Fabricate.times(2, :client)
Mongoid::Errors::DocumentNotFound:
Problem:
Document not found for class Client with attributes {:auth_id=>"7123"}.
Обратите внимание, что если я использую @clients = Fabricate.times(1, :client)
(что означает создание только одного клиента), он работает отлично. Так что думаю, что проблема в DatabaseCleaner (пробовал много конфигураций, но все безуспешно).
Я использую Ruby 2.2.0, Rails 4.2.0 (точнее, rails-api), DatabaseCleaner 1.4.1, Mongoid 4.0.2 и Fabrication 2.13.1.
У вас есть идеи, как это исправить? Спасибо.