gpt4 book ai didi

ruby-on-rails - 在 RSpec 自动化测试期间使 Sprockets 缓存无效

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:59 25 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我有一个 .js.erb 文件,其中包含一个根据某些 Ruby 代码动态设置的变量。

var myTimer = <%= MyApp.config.timeout_time * 1000 %>;

该应用程序运行良好,但我在某些自动化测试中遇到了问题。该问题出现在使用此 JavaScript 的 RSpec 功能测试中。我的 spec 文件有许多测试可以动态更改 ruby​​ MyApp.config.timeout_time 时间以测试不同的场景。在我的规范文件中,第一个示例通过,其余示例失败。

我终于意识到这是因为 myTimer 永远不会在 JavaScript 端更新。当第一个测试运行时,JavaScript 会使用在 Ruby 中设置的当前值进行编译。当我为第二次测试更改 Ruby 计时器时,RSpec 仍在 JavaScript 中使用之前的值。

有没有办法告诉 Sprockets/Rails 使文件或缓存的一部分无效,以便重建 JavaScript?我一般不想关闭缓存,我只是需要一种在需要时基于每个测试使 application.js 无效的方法。

我也许可以“触摸”文件系统上的某个 JavaScript 文件,让 sprockets 认为该文件已被更改,但我真的不想那样做。

最佳答案

我不知道如何做你问的。但是您可以考虑将 myTimer 设置为您希望它在需要它为特定值的功能规范中的值。

假设您使用的是 Capybara,您可以使用

在功能规范中运行 Javascript
page.execute_script('// some Javascript')

您可能需要先重新安排您的 Javascript,将 myTimer 放在脚本可以更改它的地方。

关于ruby-on-rails - 在 RSpec 自动化测试期间使 Sprockets 缓存无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38861128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com