6

karma javascript 测试库 (née Testacular) 与 Rails 一起使用时,测试文件和模拟数据应该放在哪里?

将它们放在 /assets/ 中似乎很奇怪,因为我们实际上并不想将它们提供给用户。(但我想如果它们根本就没有预编译,那么这不是一个实际的问题,对吧?)

4

3 回答 3

8

通过这篇文章:https ://groups.google.com/forum/#!topic/angular/Mg8YjKWbEJ8

我正在尝试看起来像这样的东西:

// list of files / patterns to load in the browser
files: [
  'http://localhost:3000/assets/application.js',
  'spec/javascripts/*_spec.coffee',
  {
    pattern: 'app/assets/javascripts/*.{js,coffee}',
    watched: true,
    included: false,
    served: false
  }
],

它监视应用程序 js 文件,但不包含或提供它们,而是包含由 rails 和 sprockets 提供的 application.js。

我也一直在摆弄https://github.com/lucaong/sprockets-chain,但还没有找到一种方法来使用 requirejs 来包含 gem 中的 js 文件(例如 jquery-rails 或 angularjs-rails)。

于 2013-09-12T22:31:06.780 回答
3

我们最终将测试和模拟数据放在 Rails 应用程序的spec文件夹下,并配置 Karma 以导入它们以及来自app/assets.

为我们工作。欢迎其他想法。

我们的config/karma.conf.js文件:

basePath = '../';

files = [
  JASMINE,
  JASMINE_ADAPTER,

  //libs
  'vendor/assets/javascripts/angular/angular.js',
  'vendor/assets/javascripts/angular/angular-*.js',
  'vendor/assets/javascripts/jquery-1.9.1.min.js',
  'vendor/assets/javascripts/underscore-min.js',
  'vendor/assets/javascripts/angular-strap/angular-strap.min.js',
  'vendor/assets/javascripts/angular-ui/angular-ui.js',
  'vendor/assets/javascripts/angular-bootstrap/ui-bootstrap-0.2.0.min.js',

  //our app!
  'app/assets/javascripts/<our-mini-app>/**',

  // and our tests
  'spec/javascripts/<our-mini-app>/lib/angular/angular-mocks.js',
  'spec/javascripts/<our-mini-app>/unit/*.coffee',
  // mocked data
  'spec/javascripts/<our-mini-app>/mocked-data/<data-file>.js.coffee',
];

autoWatch = true;

browsers = 'PhantomJS'.split(' ')

preprocessors = {
  '**/*.coffee': 'coffee'
}
于 2013-06-04T00:40:55.017 回答
3

我发现这个项目作为一个起点很有帮助。https://github.com/monterrail/rails-angular-karma-example。作者在他们的博客上对此进行了解释。

这是一个带有 angular.js 和 karma 测试运行器的示例 Rails 应用程序。

于 2013-12-10T18:36:07.370 回答