Как включить кэширование страниц в функциональном тесте в рельсах? - PullRequest
2 голосов
/ 04 мая 2010

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

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

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

Deb

Ответы [ 2 ]

3 голосов
/ 09 декабря 2010

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

0 голосов
/ 18 мая 2010

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

config.action_controller.perform_caching             = true
...