Как включить кэширование страниц в функциональном тесте на рельсах?

Можно ли включить кеширование страниц для функционального теста? Не сработало следующее:

class ArticlesControllerTest < ActionController::TestCase
 def setup
    ActionController::Base.public_class_method :page_cache_path
    ActionController::Base.perform_caching = true
 end
end

заранее спасибо

Деб


person deb    schedule 04.05.2010    source источник


Ответы (2)


Мой текущий обходной путь — включить 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 во время выполнения не воссоздает ожидаемые фильтры. Приведенный выше пример является одним из способов принудительной повторной оценки вашего контроллера.

person Charles Maresh    schedule 08.12.2010

Я не мог понять, почему это не работает, поэтому я включил кеширование непосредственно на environments/test.rb:

config.action_controller.perform_caching             = true
person deb    schedule 18.05.2010
comment
Я пробую это в Rails 3.1.8, и это не работает. Страница обновляется при каждом запросе. - person Andy Waite; 09.10.2012