Javascript 因果报应+;角度模拟类型错误:';未定义';不是对象(计算';angular.mock={}';)
我试图使用Karma+Jasmine编写单元测试,但在角度模拟中遇到了错误。运行grunt测试时,我遇到以下错误: PhantomJS 1.9.8(Mac OS X)错误 TypeError:“undefined”不是对象(计算“angular.mock={}”) at/Users/danielbogart/Documents/coding/work/AexNav/bower_components/angular mocks/angular->mocks.js:17 Chrome 39.0.2171(Mac OS X 10.9.4)错误 未捕获的TypeError:无法设置未定义的属性“mock” at/Users/danielbogart/Documents/coding/work/AexNav/bower_components/angular mocks/angular->mocks.js:17 GrunFile karma配置:Javascript 因果报应+;角度模拟类型错误:';未定义';不是对象(计算';angular.mock={}';),javascript,angularjs,unit-testing,jasmine,karma-runner,Javascript,Angularjs,Unit Testing,Jasmine,Karma Runner,我试图使用Karma+Jasmine编写单元测试,但在角度模拟中遇到了错误。运行grunt测试时,我遇到以下错误: PhantomJS 1.9.8(Mac OS X)错误 TypeError:“undefined”不是对象(计算“angular.mock={}”) at/Users/danielbogart/Documents/coding/work/AexNav/bower_components/angular mocks/angular->mocks.js:17 Chrome 39.0.21
karma: {
options: {
frameworks: ['jasmine'],
files: [
'dom_munger.data.appjs',
'tests/spec/*.js',
'bower_components/angular-mocks/angular-mocks.js'
],
logLevel: 'ERROR',
reporters: ['mocha'],
autoWatch: false, //watching is handled by grunt-contrib-watch
singleRun: true
},
all_tests: {
browsers: ['PhantomJS', 'Chrome']
},
during_watch: {
browsers: ['PhantomJS']
}
}
谢谢 angular-mocks.js假定angular.js也包含在内。您还需要包含angular.js,那么只有angular.mocks可以工作,否则窗口中的angular.js将不定义
files: [
'dom_munger.data.appjs',
'path/to/angular.js', //<-- include angularjs
'bower_components/angular-mocks/angular-mocks.js',
'tests/spec/*.js'
],
文件:[
“dom_munger.data.appjs”,
'path/to/angular.js',//2017年更新和第2页(但相同的angular我在以下声明中有此错误:
angular.mock.module('ui.router')
这是由库声明中的错误顺序引起的:
karma.config.js:
...
files: ['./node_modules/angular-mocks/angular-mocks.js']
.concat(dependencies),
...
(dependencies
是我的lib列表,包含angular.js
)
我只需将'./node_modules/angular mocks/angular mocks.js'
移动到依赖项列表中,但是之后是angular.js
:
像这样:
...
'./node_modules/angular/angular.js',
'./node_modules/angular-mocks/angular-mocks.js'
...
进一步说:
如果您查看angular mocks.js
,您会发现它需要angular.js
才能工作
/**
* @license AngularJS v1.7.5
* (c) 2010-2018 Google, Inc. http://angularjs.org
* License: MIT
*/
(function(window, angular) {
'use strict';
/* global routeToRegExp: true */
...
您还需要包括angular.js,然后只有angular.mocks可以使用,否则窗口中的angular.angular将不定义。我也遇到了这个问题。如果您使用browserify,请确保在需要angular-mocks之前需要您的包。它是“文件”中缺少的参考文件在我的karma配置文件中。我猜jlew的意思是在包含angular-mocks.js之前需要包含angular.js,比如:文件:['bower_components/angular/angular.js','bower_components/angular mocks/angular mocks.js',在我的设置中几乎可以使用,对我来说,网页上说模块“angular”没有默认的导出。我使用这样的方法解决:import*作为角度从“angular”;
import“angular mock/ngMock”;
/**
* @license AngularJS v1.7.5
* (c) 2010-2018 Google, Inc. http://angularjs.org
* License: MIT
*/
(function(window, angular) {
'use strict';
/* global routeToRegExp: true */
...