Машинист + Cabybara + Test::Unit = чертежи отсутствуют

Я столкнулся с очень запутанной проблемой...

Все мои тесты проходят, когда я запускаю их в изоляции. Когда я запускаю их как rake test, после запуска интеграционных тестов Machinist говорит, что больше не может найти чертежи.

Чтобы тесты на капибару заработали, я должен вызвать магию...

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

#always use the same connection so updates inside of transactions are visible.
#allows the use of use_transactional_fixtures
ActiveRecord::ConnectionAdapters::ConnectionPool.class_eval do
  def current_connection_id
    #always fetch the connection for the main thread
    # was Thread.current.object_id
    Thread.main.object_id
  end

  def clear_reloadable_connections!
    #do nothing, when connections are reloaded, otherwise the only connection is severed on each request
  end
end

После выдачи чего-то вроде visit new_user_session_pathЯ должен сделать это load "#{Rails.root}/test/blueprints.rb"чтобы снова использовать мои чертежи.

Любые идеи о том, как машинист может потерять свои чертежи после простого visit?

1 ответ

Проблема здесь связана с драйвером RackTest для Capybara. После обработки запроса он звонит ActionDispatch::Reloader.cleanup! Глядя на комментарий ActionDispatch::Reloaderвключается только когда config.cache_classes ложно

Таким образом, одним из решений было бы установить config.cache_classes чтобы правда на environment/test.rb - но это не лучшее решение.

Другое решение - использовать другой драйвер (я сам не пробовал), Capybara поставляется с другими драйверами.

Я сделал что-то похожее на Брэда - перезагружая чертежи моей спецификации, в которой используются посещения Капибары. В вашей спецификации вы можете добавить блок после:

describe "my test" do
    after do
        load_blueprint
    end
end

Я поместил свой метод reload_blueprint в файл в каталоге spec/support, т.е. spec/support/load_blueprint.rb

Это все еще обходной путь, а не правильное решение.

Другие вопросы по тегам