Как включить кэширование страниц в функциональном тесте в рельсах?
Можно ли включить кеширование страниц для функционального теста? Следующее не сработало:
class ArticlesControllerTest < ActionController::TestCase
def setup
ActionController::Base.public_class_method :page_cache_path
ActionController::Base.perform_caching = true
end
end
заранее спасибо
дебютантка
2 ответа
Решение
Я не мог понять, почему это не работает, поэтому я включил кеширование непосредственно на environments/test.rb
:
config.action_controller.perform_caching = true
Мой текущий обходной путь должен включить perform_caching
затем перезагрузите контроллер:
class ProjectsCachingTest < ActionController::IntegrationTest
def setup
# force the controller to be reloaded when caching is enabled
ActionController::Base.perform_caching = true
load "projects_controller.rb"
end
def teardown
# undo the actions above
ActionController::Base.perform_caching = false
load "projects_controller.rb"
end
end
В последней версии Rails 2 проблема, с которой вы столкнулись, связана с методами класса caches_action
а также caches_page
, Они оба создают вокруг фильтра для кэширования, но только когда perform_caching
включен.
Итак, модифицируя perform_caching
во время выполнения не воссоздает ожидаемое вокруг фильтров. Приведенный выше пример является одним из способов заставить ваш контроллер быть переоценен.