Spork Capybara, конфликт config.cache_classes - PullRequest
5 голосов
/ 10 июня 2011

Я пытаюсь настроить Spork и Capybara с TestUnit, и я работаю в проблему конфигурации test.rb.

Проблема в том, что Spork требует, чтобы config.cache_classes должен быть установлен в false, чтобы изменения в модели могли отражаться при запуске тестов без необходимости сброса Spork всех время.

Капибара, с другой стороны, похоже, требует, чтобы config.cache_classes должен быть установлен в true, иначе тесты интеграции просто не похоже на работу.

Я просто ищу любое возможное решение / объяснение этому. Является это то, что существует только в TestUnit, или это, возможно, ошибка, и я должен сообщить об этом как таковой? Любая помощь будет очень оценили!

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

Я бы рекомендовал использовать подход, аналогичный этому .Главное, что вам нужно сделать, это установить для вашего config.cache_classes значение true, но вынудить Spork перезагружать ваши модели и зависимости при каждом запуске:

Spork.each_run do
  ActiveSupport::Dependencies.clear
  ActiveRecord::Base.instantiate_observers
end if Spork.using_spork?

Надеемся, что это позволит кэш-классам быть истинными дляCapybara, но это также позволит перезагрузить ваши модели и наблюдателей между тестовыми прогонами.

1 голос
/ 03 сентября 2011

Я столкнулся с подобной проблемой со спорком и огурцом.Решение, которое я нашел, было:

config.cache_classes = (ENV['DRB'] == 'true' ? false : true)

spork устанавливает среду DRB.Я не думаю, что это самый элегантный способ решить эту проблему, но если капибара задает некоторую переменную env, вы могли бы использовать это?

...