База данных RSpec не очищается - PullRequest
0 голосов
/ 14 ноября 2018

Я обнаружил, что когда я запускаю все свои тесты (около 20 файлов), моя тестовая база данных не всегда очищается, что означает, что мои тесты дают сбой при запуске всего набора, но успешны при запуске отдельных файлов.

Я обнаружил, что некоторые таблицы не пусты в начале спецификации.

Вот например:

require "rails_helper"

RSpec.describe AccountsWorkflow do
  describe "initalizes" do
     it "knows if it has children" do
      expect(QbAccount.count).to eq(0)   #QbAccount is ActiveRecord
     [...]                               #fails with QbAccount.count =4
     end
    end
end

Первое ожидание не выполняется, что означает, что по некоторым причинам должны быть строки, не удаленные из предыдущего теста. Я рассмотрел настройки в ряде постов здесь, очиститель базы данных и следующие в spec_helper.rb

RSpec.configure do |config|
 [other standard config settings] 
 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

У меня также есть

   config.use_transactional_fixtures = false

в rails.helper.rb. Любые идеи о том, почему мои тестовые таблицы могут быть пустыми в начале этого теста?

...