Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 因果报应+;角度模拟类型错误:';未定义';不是对象(计算';angular.mock={}';)_Javascript_Angularjs_Unit Testing_Jasmine_Karma Runner - Fatal编程技术网

Javascript 因果报应+;角度模拟类型错误:';未定义';不是对象(计算';angular.mock={}';)

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+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配置:

    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 */
...