RSpec, Postgres и DatabaseClearer: возможно ли сбросить идентификаторы с помощью стратегии транзакций?
Я знаю, что не должен кодировать конкретные идентификаторы, но иногда это просто делает жизнь намного проще. Я использую DatabaseCleaner с RSpec и Postgres, и мне интересно, можно ли сбросить идентификаторы между спецификациями при использовании стратегии транзакций?
Вот мой ток spec_helper
:
RSpec.configure do |config|
config.expect_with :rspec do |c|
c.syntax = [:should, :expect]
end
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
DatabaseCleaner.strategy = :transaction
load_seed_data
end
config.before(:all) do
DatabaseCleaner.start
end
config.after(:all) do
DatabaseCleaner.clean
end
config.example_status_persistence_file_path = "./spec/failures.txt"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
config.include FactoryGirl::Syntax::Methods
config.include RSpec::Rails::RequestExampleGroup
config.include Requests::JsonHelpers
config.include Requests::Extensions
end
1 ответ
Это невозможно, потому что автоинкремент реализуется через механизм, называемый последовательностью, и они не возвращаются в транзакции: /questions/32508190/posledovatelnosti-na-kotoryie-ne-vliyayut-tranzaktsii/32508203#32508203