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

Joh*_*lly 7 javascript unit-testing ruby-on-rails jammit jasmine

我有一个使用Jammit组合javascript资源的rails应用程序,我想使用Jasmine进行我的javascript的BDD风格测试.我想知道是否有人有任何关于从Jasmine访问Jammit生成的'pacakges'的建议?

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

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

我也可以先手动运行Jammit来生成编译后的资产,然后再运行Jasmine,但我不得不在每次测试运行之前手动重新生成资产以测试更改,这会严重阻碍快速测试 - 驱动型工作流程.

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

  • 从Jasmine的机架服务器中安装Jammit控制器,以便它可以提供Jasmine的软件包?这基本上和Jammit在Rails的开发环境中已经完成的工作方式相同.
  • 在执行测试之前,以某种方式挂钩Jasmine以在每个页面加载上打包资产?这会慢一点,但会省去一步,确保事情是最新的.

有什么建议?我刚刚开始这样做,所以我可能会把它弄错.任何建议将不胜感激.:-)

谢谢!-约翰

Gab*_*mbe 10

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

  1. 使用guard gemguard-jammit gem来监视项目资产的变化
  2. 在您选择的浏览器中安装LiveReload插件并安装guard-livereload gem,这样您可以在规范或资产发生变化时自动重新加载浏览器.
  3. 启动后卫,然后耙茉莉,然后在浏览器中加载茉莉花规格,然后按实时重新加载按钮连接到守卫启动的实时重新加载服务器
  4. 更改您的文件.观看魔术发生,因为后卫运行jammit并指示您的浏览器刷新茉莉花规格.

这是一个让你入门的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
Run Code Online (Sandbox Code Playgroud)