2

是否可以为功能测试打开页面缓存?以下没有奏效:

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

提前致谢

德布

4

2 回答 2

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_actioncaches_page. 它们都创建了一个环绕过滤器来进行缓存,但仅在perform_caching启用时才可用。

因此,perform_caching在运行时修改不会重新创建预期的过滤器。上面的示例是强制重新评估控制器的一种方法。

于 2010-12-08T22:32:43.273 回答
0

我不知道为什么这不起作用,所以我最终直接启用了缓存environments/test.rb

config.action_controller.perform_caching             = true
于 2010-05-18T17:05:16.243 回答