SystemStackError - слишком большой уровень стека; в тесте Rspec, используя Ac t_as_audited, Rspec, Очиститель базы данных

Я столкнулся со странной бесконечной рекурсией, которая появляется только в тесте Rspec. Как ни странно, это было вызвано добавлением аудита к моему объекту User, даже если спецификация, на которой он работает, на самом деле не связана с моим объектом User

Вот тест, на котором он провалился. Как и все бесконечные рекурсии, я не получаю фактической трассировки, только слишком большой провал на уровне стека:

 1) Spree::CheckoutController order in address state #update payment to complete step should set the address id on a newly created credit card; does not regress https://www.pivotaltracker.com/story/show/84864964
     Failure/Error: Unable to find matching line from backtrace
     SystemStackError:
       stack level too deep
     # /Users/jason/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.11/lib/active_record/connection_adapters/abstract/database_statements.rb:212

1 ответ

Я изолировал это от своего дополнительного обработчика в Rspec, который был настроен в соответствии с настройкой очистителя базы данных, например:

  config.after(:each) do
    DatabaseCleaner.clean
    Warden.test_reset!
  end

Исправление заключается в том, чтобы просто отключить аудит моей пользовательской модели, например, так:

  config.after(:each) do
    Spree::User.auditing_enabled = false # disable acts_as_audited during database cleanup
    DatabaseCleaner.clean
    Warden.test_reset!
  end
Другие вопросы по тегам