在我的Rails应用程序中,我正在为某些RSpec测试动态修改app/assets/stylesheets/main.scss.erb
文件。如果我单独运行RSpec测试,它们都可以通过。如果我一起运行它们,则除第一个测试外,每个测试都会失败。我怀疑链轮缓存了最初的更改,该更改允许第一个测试通过,但从不为后续测试更新缓存。
是否有一种方法可以在每次测试执行之前清除链轮缓存(我正在使用链轮3.7.2),并强制其从文件的当前状态重新加载?
更新12/12/2018:这是关于我在做什么的更多背景信息。我有一个Rails引擎,可以为公司中的多个应用程序提供支持。引擎在引擎内部加载了一个样式表,并且还在主机Rails应用程序中查找并加载了另一个样式表(即,我们不需要Rails应用将样式表自身添加到application.css清单文件中;引擎可以处理它) 。我们最近发现了一个阻止引擎加载应用程序级别样式表的错误,因此我对其进行了修复,并开始在引擎中添加一些测试。我的第一个测试尝试是创建一个包含一些特殊div的页面。 div使用各种样式表中定义的CSS ID。如果div以预期的样式结束,我知道他们只能从样式表中获得那些样式(这确认它们已被加载)。此策略有效,但是需要在引擎和虚拟应用程序(引擎内部)中散布代码。然后,我开始尝试在执行每个测试时让测试将CSS规则动态地添加到样式表中。该策略是一项重大改进,因为它将所有有趣的代码保留在测试中。任何阅读特定测试的人都可以立即看到正在添加的样式以及正在修改的文件。一切都包含在测试中。不幸的是,即使我在两次测试之间都重置了所有必要的文件,但资产缓存似乎并未失效。