gpt4 book ai didi

javascript - 如何有效地使用 Jasmine 来测试通过 Jammit 打包的 javascript Assets ?

转载 作者:数据小太阳 更新时间:2023-10-29 04:31:32 24 4
gpt4 key购买 nike

我有一个使用 Jammit 组合 javascript Assets 的 Rails 应用程序,我想使用 Jasmine用于我的 javascript 的 BDD 样式测试。我想知道是否有人对从 Jasmine 中访问 Jammit 生成的“包”有任何建议?

问题是 Jasmine 是通过在磁盘上定义要测试的 JS 文件列表来配置的,然后它将这些文件包含在它自己的测试运行器页面中,该页面在浏览器中加载并运行。

在使用 Jammit 打包之前,我可以在 jasmine.yml 配置文件中引用每个单独的 JS 文件...但是,Jammit 已经为我处理了文件之间的依赖关系,更重要的是,我还需要访问已编译的 javascript templates Jammit 生产的。

我也可以先手动运行 Jammit 来生成编译后的 Assets ,然后再运行 Jasmine,但最终我不得不在每次测试运行之前手动重新生成 Assets 以测试更改,这会严重限制快速测试驱动型工作流。

我想知道我是否能以某种方式:

  • 从 Jasmine 的机架服务器中安装 Jammit Controller ,以便它可以提供来自 Jasmine 的包?这基本上与 Jammit 在 Rails 的开发环境中所做的工作方式相同。
  • 以某种方式连接到 Jasmine 以在执行测试之前在每个页面加载时打包 Assets ?这会更慢,但会节省我的步骤并确保一切都是最新的。

有什么建议吗?我才刚刚开始,所以我可能会做错了。任何建议将不胜感激。 :-)

谢谢!-约翰

最佳答案

这是您正在寻找的神奇组合:

  1. 使用guard gem连同 guard-jammit gem观察项目 Assets 的变化
  2. 安装 LiveReload plugin在您选择的浏览器中安装 guard-livereload gem因此,只要您的规范或 Assets 发生变化,您就可以让浏览器自动重新加载。
  3. 启动守卫,然后 rake Jasmine ,然后在浏览器中加载你的 Jasmine 规范,然后按实时重新加载按钮连接到守卫启动的实时重新加载服务器
  4. 更改您的文件。当守卫运行 jammit 并指示您的浏览器刷新 jasmine 规范时,观看魔法发生。

这是一个让您入门的 Guardfile 示例:

guard 'jammit' do
watch(%r{public/javascripts/(.*)\.js})
watch(%r{app/views/jst/(.*)\.jst})
watch(%r{public/stylesheets/(.*)\.css})
end

guard 'livereload', :apply_js_live => false do
watch(%r{app/.+\.(erb|haml)})
watch(%r{app/helpers/.+\.rb})
watch(%r{public/.+\.(css|js|html)})
watch(%r{config/locales/.+\.yml})
watch(%r{spec/javascripts/.+\.js})
end

关于javascript - 如何有效地使用 Jasmine 来测试通过 Jammit 打包的 javascript Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5833929/

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