我有一个使用Jammit组合javascript资源的rails应用,我想使用Jasmine进行我的javascript的BDD样式测试。我想知道是否有人有任何关于从Jasmine访问Jammit生成的'pacakges'的建议?
问题是Jasmine是通过在磁盘上定义要测试的JS文件列表来配置的,然后它将这些文件包含在自己的测试运行器页面中,该页面在浏览器中加载并运行。
我可以在jasmine.yml配置文件中使用Jammit打包之前引用每个JS文件...但是,Jammit已经在为我处理文件之间的依赖关系了,更重要的是,我也是需要访问Jammit生成的编译javascript templates。
我也可以先手动运行Jammit来生成已编译的资产,然后运行Jasmine,但我最终必须在每次测试运行之前手动重新生成资产以测试更改,这会严重影响快速测试驱动型工作流程。
我想知道我能否以某种方式:
有什么建议吗?我刚刚开始这样做,所以我可能会把它弄错。任何建议将不胜感激。 :-)
谢谢! -John
答案 0 :(得分:10)
这是你正在寻找的神奇组合:
这是一个让你入门的示例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
答案 1 :(得分:3)
我想出了一个好的解决方案:强制Jammit重新加载并在茉莉花开始时打包。为此,您需要编辑jasmine_config.rb文件:
require 'jammit'
module Jasmine
class Config
Jammit.reload!
Jammit.package!
end
end
我在这里写了一篇更详细的帖子:http://www.rebeccamiller-webster.com/2011/05/jammit-jasmine-bdd/