将karma javascript 测试库 (née Testacular) 与 Rails 一起使用时,测试文件和模拟数据应该放在哪里?
将它们放在 /assets/ 中似乎很奇怪,因为我们实际上并不想将它们提供给用户。(但我想如果它们根本就没有预编译,那么这不是一个实际的问题,对吧?)
将karma javascript 测试库 (née Testacular) 与 Rails 一起使用时,测试文件和模拟数据应该放在哪里?
将它们放在 /assets/ 中似乎很奇怪,因为我们实际上并不想将它们提供给用户。(但我想如果它们根本就没有预编译,那么这不是一个实际的问题,对吧?)
通过这篇文章: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)。
我们最终将测试和模拟数据放在 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'
}
我发现这个项目作为一个起点很有帮助。https://github.com/monterrail/rails-angular-karma-example。作者在他们的博客上对此进行了解释。
这是一个带有 angular.js 和 karma 测试运行器的示例 Rails 应用程序。