2010-05-04 2 views
2

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

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

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

Деб

ответ

0

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

config.action_controller.perform_caching    = true 
+0

Я пытаюсь это сделать в Rails 3.1.8, и он, похоже, не работает. Страница обновляется по каждому запросу. –

3

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

+1

работает для меня, спасибо. – fguillen

Смежные вопросы