得不到茉莉花测试依赖,得到错误:[$ injector:unpr]未知提供者:appConfigProvider< - appConfig

时间:2016-03-03 04:47:56

标签: angularjs jasmine tdd karma-jasmine

我正在尝试编写一个茉莉花测试,但测试没有注入模块中声明的任何依赖项' myApp'。例如:对于依赖(常量)值appConfig,它会抛出错误:

Error: [$injector:unpr] Unknown provider: appConfigProvider <- appConfig

代码段:

describe("UI grid custom directive test", function() {

    var $rootScope, $compile;
    beforeEach(module('myApp'));
beforeEach(inject(function(_$rootScope_, _$compile_, TestUtils, appConfig) {
    $rootScope = _$rootScope_;
    console.log(appConfig);
    TestUtils.test();
    $compile = _$compile_;
    var elm = angular.element(
        '<custom-ui-grid></custom-ui-grid>'
    );
    $compile(elm)($rootScope);
    $rootScope.$digest();
}));

在app-init.js中引导应用程序

var app = angular.module("myApp", [
    'ngRoute',
    'ngCookies'
     ...
]);

...
app.value('appConfig', {
        appRootPath: appRootPath
    });
..

Karma.unit.config.js

files: [
....
        //App-specific Code
        './main/webapp/app/app-init.js',
        './main/webapp/app/config.js',
.....

1 个答案:

答案 0 :(得分:0)

修正了!!

在指令的减速之一中,正在创建模块而不是重复使用/导入。

function () {
    'use strict';
    var myApp = angular.module('myApp', []);//notice the '[]'
    ...

因为我再次创建模块,app-init.js中的所有声明,配置都被删除了。将其更正为

function () {
    'use strict';
    var myApp = angular.module('myApp');
    ...

并且效果很好。