Angularjs 当我尝试注入服务时,Angular单元测试失败

Angularjs 当我尝试注入服务时,Angular单元测试失败,angularjs,unit-testing,karma-jasmine,Angularjs,Unit Testing,Karma Jasmine,我有一个角度,我想用karma和jasmine测试我的控制器和服务。我写了一些测试,它们成功了。然后我对我的角度项目做了一些大的改变。 现在我的测试都失败了,我不知道为什么。我在测试中注释了所有内容,只是想检查$controller服务是否已加载。但即使这样也不行 我的模块定义: angular.module('cManagement', [ 'angular-multi-select', 'ngCookies', 'ui.router', 'ui.bootstr

我有一个角度,我想用karma和jasmine测试我的控制器和服务。我写了一些测试,它们成功了。然后我对我的角度项目做了一些大的改变。 现在我的测试都失败了,我不知道为什么。我在测试中注释了所有内容,只是想检查
$controller
服务是否已加载。但即使这样也不行

我的模块定义:

angular.module('cManagement', [
    'angular-multi-select',
    'ngCookies',
    'ui.router',
    'ui.bootstrap',
    'pascalprecht.translate',
    'ngIdle'
])
这是我的测试:

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

 beforeEach(module('cManagement'));

 it('should exist', inject(function($controller){
 }));
});
我的因果报应:

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
        }

    });
};
以下是我得到的错误:

信息[karma]:karma v0.12.37服务器在启动 信息[launcher]:启动浏览器PhantomJS 信息[PhantomJS 2.1.1(Linux 0.0.0)]:连接到id为71013283的插座7iIMKn57rTEEJqjikf2o上 PhantomJS 2.1.1(Linux 0.0.0)CMA管理应存在失败 /home/chris/IdeaProjects/activitymanagement/node_modules/angular/angular.js:4527:53 forEach@/home/chris/IdeaProjects/activitymanagement/node_modules/angular/angular.js:321:24 loadModules@/home/chris/IdeaProjects/activitymanagement/node_modules/angular/angular.js:4487:12 createInjector@/home/chris/IdeaProjects/activitymanagement/node_modules/angular/angular.js:4409:30 workFn@/home/chris/IdeaProjects/activitymanagement/node_modules/angular mocks/angular mocks.js:2799:60 PhantomJS 2.1.1(Linux 0.0.0):执行2/2(1失败)(0.006秒/0.007秒)


每一个暗示都很感激

您很可能存在依赖性问题—可能是无法加载的模块—但您无法准确判断是哪一个问题,因为PhantomJS有时会从错误消息中隐藏相关信息

解决方案是(暂时)将测试浏览器更改为Chrome或任何其他无头浏览器,以查看到底出了什么问题

例如:您应该更改Karma配置或
grunfile.js
或您拥有的内容:

浏览器:['PhantomJS'],

例如:
浏览器:['Chrome'],

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


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

您可以尝试在每个
块之前将
注入到单独的
中吗
beforeach(inject(函数($controller){}))
可能只是一个键入错误,但是“use strict”;“应该是“use strict”;并且在
use strict
附近有一个额外的勾号,在每个块都没有改变之前移动到一个单独的区域。纠正错误也不会使用严格的打字错误。嘿,我解决了我的问题。将karma服务器更改为Chrome或其他浏览器。PhantomJS似乎出于某种原因隐藏了这样的错误。我敢打赌,如果你使用Chrome,真正的原因就会显现出来。