Стратегия очистки базы данных в Rspec - PullRequest
0 голосов
/ 25 октября 2018

Можно ли проверить, какова стратегия очистки базы данных в любой точке тестовых случаев?

Как узнать, какой тип стратегии используется в тестовых случаях?

config.before(:example) do
  DatabaseCleaner.strategy = :transaction
end

config.before(:example, type: :feature, js: true) do
  DatabaseCleaner.strategy = :truncation
end

require 'rails_helper'
RSpec.feature 'Login Feature', type: :feature do
  it 'invalid user login fail' do
    a = create(:normal_user, role: AdminType::OWNER)
    visit('/')
  end
end

Здесь я упомянул тип как элемент в самом верхнем блоке describe (Группа примеров), а не в примере.Но я настроил очиститель базы данных для использования стратегии усечения в примере типа функции для других, использующих стратегию транзакций.

Какой тип стратегии будет использовать очиститель базы данных, усечение или транзакция?

Если он используетСтратегия усечения, тогда я думаю, что все примеры в type: feature будут рассмотрены type: feature примеров.Я прав?

Как мне проверить текущую стратегию (например, просмотрев журнал тестов)?

1 Ответ

0 голосов
/ 26 октября 2018

Да - любой тест внутри блока RSpec.feature будет иметь метаданные tpye: :feature, если он не переопределяет путем указания другого типа.Системные спецификации и спецификации функций - это одно и то же, просто Rails добавил дополнительный уровень абстракции в системные тесты (driven_by и т. Д.)

В Rails 5.1+ для тестов функций или системы, даже если используется система RSpecs.Тесты, а не системные тесты на основе минитест Rails, DatabaseCleaner, как правило, не нужны.Это связано с тем, что в Rails 5.1 добавлено автоматическое совместное использование соединения с базой данных между всеми потоками в процессе тестирования в тестовой среде.Если вам нужен отдельный процесс для доступа к базе данных во время тестов, вам все равно понадобится DatabaseCleaner, но это не распространено, особенно в начинающих проектах.

...