我有一个自定义链轮引擎和一个测试(rspec)。规范访问 /assets/application.js 然后检查内容。我想强制 spocket 在测试时编译(或渲染)资产,而不是从 tmp/cache 或它可能已经编译的任何其他地方提取它。
我该怎么做?我在 sprockets 代码中没有看到任何明显的“忽略缓存”。
提前谢谢你,佩里
我有一个自定义链轮引擎和一个测试(rspec)。规范访问 /assets/application.js 然后检查内容。我想强制 spocket 在测试时编译(或渲染)资产,而不是从 tmp/cache 或它可能已经编译的任何其他地方提取它。
我该怎么做?我在 sprockets 代码中没有看到任何明显的“忽略缓存”。
提前谢谢你,佩里
也许将 a 设置null_store
为缓存后端比tmp
每次都清除文件夹要好。在您的测试设置上尝试这样的事情(在应用程序初始化之后):
Rails.application.assets.cache = ActiveSupport::Cache.lookup_store(:null_store)
我最终这样做了:
before(:each) do
(Rails.root + "tmp/cache").rmtree
end
按照建议,我的代码现在是这样的:
before(:each) do
@original_cache = Rails.application.assets.cache
Rails.application.assets.cache = ActiveSupport::Cache.lookup_store(:null_store)
end
after(:each) do
Rails.application.assets.cache = @original_cache
end