当我尝试注入服务时,Angular Unit测试失败

bon*_*bon 2 unit-testing angularjs karma-jasmine

我有一个角度,我想用业力和茉莉来测试我的控制器和服务.我写了一些测试,他们工作了.然后我对我的角度项目做了一些重大改动.现在我的测试都失败了,我无法弄清楚原因.我在测试中评论了所有内容,只是想检查$controller服务是否被加载.但即使这样也行不通.

我的模块定义:

angular.module('cManagement', [
    'angular-multi-select',
    'ngCookies',
    'ui.router',
    'ui.bootstrap',
    'pascalprecht.translate',
    'ngIdle'
])
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

use strict';
describe("cManagement", function() {

 beforeEach(module('cManagement'));

 it('should exist', inject(function($controller){
 }));
});
Run Code Online (Sandbox Code Playgroud)

我的Karma配置:

module.exports = function(config){
    config.set({

        basePath : '',
        reporters: ['progress', 'junit'],
        files : [
            'node_modules/angular/angular.js',
            'node_modules/angular-cookies/angular-cookies.js',
            'node_modules/angular-multi-select/dist/angular-multi-select.js',
            'node_modules/angular-ui-router/release/angular-ui-router.js',
            'node_modules/angular-ui-bootstrap/dist/ui-bootstrap.js',
            'node_modules/angular-translate/dist/angular-translate.js',
            'node_modules/angular-mocks/angular-mocks.js',
            'assets/plugins/angular-idle/angular-idle.js',
            'app/app.module.js',
            'app/components/login/*',
            'app/**/*'
        ],

        singleRun : true,

        frameworks: ['jasmine'],

        browsers : ['PhantomJS'],

        plugins : [
                'karma-jasmine',
                'karma-junit-reporter',
                'karma-phantomjs-launcher'
                ],

        junitReporter : {
            outputDir: 'test_out',
            userBrowserName: false
        }

    });
};
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

INFO [karma]:Karma v0.12.37服务器在 http:// localhost:9876 / INFO [launcher]启动:启动浏览器PhantomJS INFO [PhantomJS 2.1.1(Linux 0.0.0)]:连接套接字7iIMKn57rTEEJqjikf2o,ID为71013283 PhantomJS 2.1.1(Linux 0.0.0)c管理应该存在FAILED /home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4527:53 forEach @/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular. js:321:24 loadModules@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4487:12 createInjector@/home/chris/IdeaProjects/campaignManagement/node_modules/angular/angular.js:4409:30 workFn @/home/chris/IdeaProjects/campaignManagement/node_modules/angular-mocks/angular-mocks.js:2799:60 PhantomJS 2.1.1(Linux 0.0.0):执行2 of 2(1 FAILED)(0.006秒/0.007秒) )

每个提示都很受欢迎.

bos*_*sch 10

很可能你有一个依赖问题 - 可能是一个无法加载的模块 - 但是你无法确切知道哪一个,因为PhantomJS有时会隐藏错误信息中的相关信息.

解决方案是将测试浏览器(暂时)更改为Chrome或任何其他非无头浏览器以查看确切的错误.

例如:你应该改变Karma配置Gruntfile.js或者你有什么:

这条线 browsers: ['PhantomJS'],

变成这样的东西: browsers: ['Chrome'],

然后你应该能够看到错误并纠正它.之后,您可以将其切换回PhantomJS.

注意:根据@ snowe2010的评论,为后代提供解决方法(问题没有答案,所以人们可能会忽视解决方案)