8

我想在我的 AngularJS + Rails 项目中使用 Karma 测试运行器。有没有人成功整合它们?更具体地说,我很想知道如何与资产管道集成(我有扩展名为 的文件.coffee.erb,需要对其进行两次预处理)。

我使用 Karma 版本 0.10.1 和 Rails 4。

任何帮助/示例将不胜感激。

4

4 回答 4

12

我一直在努力在我的 rails 应用程序中标记 Karma 了解 Sprockets,并设法提供解决方案。您需要一个 rake 任务来获取在您的 中声明的资产列表application.js,并将它们注入files您的 Karma 配置文件的数组中。

在我的 rake 任务中,我有这个:

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。如果你想要大图,我写了一个教程。

于 2014-02-04T18:26:12.513 回答
1

我没有像这样集成它们,但是对于我的项目,我选择了另一种方式,并且完全单独地为每一个服务。因此,我在单独的目录中创建了一个 rails 应用程序和一个 angular 应用程序,然后我将 angular 应用程序符号链接到 rails 应用程序的公共目录,以便 rails 服务器将提供 angular 脚本和模板。

我这样做的逻辑是我不希望在同一组代码中使用两个不同的预处理器,而且我不相信测试工具会相互配合。我还选择使用 ng-boilerplate 附带的构建脚本,这些脚本正在做相当多的工作,否则这些工作将由 rake 或其他工具完成。

我一直在写一个基于此的教程系列,可以在这里找到:http: //technpol.wordpress.com/2013/08/11/rails-app-for-angularjs-simple-application/

于 2013-08-26T21:53:27.077 回答
1

到目前为止,我看到的一些替代方案:

于 2015-03-04T00:35:52.720 回答
0

通过执行以下操作,我让 Karma 和 Angular 发挥得很好:

添加到您的development.rb文件中:

config.assets.prefix = "/dev-assets"

这会将您的资产预编译到public/dev-assets文件夹中,与生产方式相同public/assets。然后,您可以添加到您的业力配置:

files: [
    ...
    './public/dev-assets/*.js'`,
    ...
];
于 2017-07-08T21:48:15.390 回答