我想在我的AngularJS + Rails项目中使用Karma测试运行器。有没有人成功整合它们?更具体地说,我有兴趣知道如何与资产管道集成(我的文件扩展名为.coffee.erb
,需要预处理两次)。
我使用Karma版本0.10.1和Rails 4。
任何帮助/示例都将不胜感激。
答案 0 :(得分:12)
我一直在努力在我的rails应用程序中标记Karma意识到Sprockets,并设法提供解决方案。您需要一个rake任务来获取application.js
中声明的资产列表,并将它们注入您的Karma配置文件的files
数组中。
在我的佣金任务中,我有这个:
sprockets = Rails.application.assets
sprockets.append_path Rails.root.join("spec/karma")
files = Rails.application.assets.find_asset("application_spec.js").to_a.map {|e| e.pathname.to_s }
以及我的业力配置文件:
files: [
APPLICATION_SPEC,
'app/assets/javascripts/angular/*/*.{coffee,js}',
'spec/javascripts/**/*_spec.{coffee,js}'
]
我将APPLICATION_SPEC
替换为所有链轮files
。如果你想要全局,我写了tutorial。
答案 1 :(得分:1)
我没有将它们整合在一起,但对于我的项目,我选择了另一种方式,并完全分开服务。所以我在不同的目录中创建了一个rails应用程序和一个角度应用程序,然后我将角度应用程序sym链接到rails应用程序的公共目录中,以便rails服务器将提供角度脚本和模板。
我这样做的逻辑是我不想在同一组代码中使用两个不同的预处理器,而且我不相信测试工具会相互配合。我还选择使用ng-boilerplate附带的构建脚本,这些脚本正在完成相当多的工作,否则将通过rake或其他工具完成。
我一直在编写基于此的教程系列,可以在这里找到:http://technpol.wordpress.com/2013/08/11/rails-app-for-angularjs-simple-application/
答案 2 :(得分:1)
到目前为止我见过的一些替代方案:
答案 3 :(得分:0)
我通过以下方式让Karma和Angular发挥得很好:
添加到您的development.rb
文件中:
config.assets.prefix = "/dev-assets"
这会将您的资源预编译到public/dev-assets
文件夹中,与生产将转到public/assets
的方式相同。然后,您可以添加到您的业力配置:
files: [
...
'./public/dev-assets/*.js'`,
...
];