首页 文章

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

提问于
浏览
12

我正在尝试使用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' -mocks / 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']
        }
    }

谢谢!

3 回答

  • 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'
            ],
    
  • 2

    update for 2017 and webpack 2 (但角度<2)

    • 就像@jlew所说的那样,棱角分明的嘲讽希望在窗户上有角度

    Webpack正在替换

    • 模块引用

    所以在测试中你需要一个 Headers ,如:

    import angular from 'angular';
    import 'angular-mocks/ngMock';
    

    并用 angular.mock.module 替换每个全局 module 引用

  • 4

    angular-mocks.js假设angular.js也被包括在内 .

相关问题