Машинист + Cabybara + Test :: Unit = чертежи отсутствуют - PullRequest
0 голосов
/ 21 июня 2011

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

Все мои тесты проходят, когда я запускаю их изолированно.Когда я запускаю их как 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 Ответ

1 голос
/ 16 декабря 2011

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

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

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

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

...