Karma + angular-mocks TypeError:'undefined'不是对象(评估'angular.mock = {}')

Dan*_*art 13 javascript unit-testing jasmine angularjs karma-runner

我正在尝试使用Karma + Jasmine编写单元测试,但遇到角度模拟错误.运行grunt测试时出现以下错误:

PhantomJS 1.9.8(Mac OS X)错误TypeError:'undefined'不是/ Users/danielbogart/documents/coding/work/AexNav/bower_components/angular-mocks /中的对象(评估'angular.mock = {}') angular-> mocks.js:17 Chrome 39.0.2171(Mac OS X 10.9.4)错误未捕获的TypeError:无法在/ Users/danielbogart/Documents/coding/work/AexNav/bower_components/angular-中设置undefined属性'mock'嘲笑/ angular-> mocks.js:17

Gruntfile 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']
        }
    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

PSL*_*PSL 20

您还需要包含angular.js,然后只有angular.mocks将工作,否则window.angular将是未定义的.

 files: [ 
            'dom_munger.data.appjs',
            'path/to/angular.js', //<-- include angularjs
            'bower_components/angular-mocks/angular-mocks.js',
            'tests/spec/*.js'
        ],
Run Code Online (Sandbox Code Playgroud)