我开始 karma 在 AngularJs 中 yeoman 脚手架。
错误“无法调用未定义的方法‘模块’”在 gruntfile.js 中,由 yeoman 生成,位于第一行 module.exports = function (grunt) { ...
karma.conf.js 是
module.exports = function(config) {
config.set({
// base path, that will be used to resolve files and exclude
basePath: '',
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'**/*.js',
'app/bower_components/**/*.js'
],
exclude: [ ],
reporters: ['progress'],
// web server port
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
captureTimeout: 60000,
singleRun: false
});
};
angular.js 包含在 bower_components 中。
最佳答案
问题是由 files
引起的宣言。因为你加载 **/*.js
您随后包含的凉亭组件是不必要的(它已经被第一次调用加载)。
Karma 不会试图变得聪明,因此您需要指定首先要加载哪些内容。例如,从我的一个 karma.conf.js
文件:
files: [
// Required libraries
'assets/bower_components/jquery/dist/jquery.js',
'assets/bower_components/angular/angular.js',
'assets/bower_components/angular-resource/angular-resource.js',
'assets/bower_components/ng-table/ng-table.js',
// App under test
'assets/javascripts/**/!(*.spec).js',
// Mocks
'test/js/lib/angular/angular-mocks.js',
// Templates
'assets/javascripts/angular/**/*.html',
// Finally... tests
'assets/javascripts/**/*.spec.js',
'test/js/unit**/*.js'
],
在上面,我首先明确加载所需的库。然后我在 Angular 模拟库之前加载所有非测试 JS。然后我加载模板,最后引入测试。
您可以使用
!(*.spec).js
表示从第一次加载时省略规范文件(当然会改变以匹配您的命名约定)。
关于AngularJS 和 Karma,无法调用未定义的方法 'module',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22198390/