在我的单元测试中获取未知提供程序

时间:2015-09-29 09:01:16

标签: angularjs unit-testing

尝试对我的角度服务进行单元测试时出现以下错误。

错误:[$ injector:unpr]未知提供者:dbTranslateProvider。

我使用Karma和Jasmine进行测试,我的代码包含了WebPack。我是Angular和Angular单元测试的新手。

我的单元测试看起来像这样(我还没有测试任何东西):

describe("dbTranslate", function () {

    beforeEach(function () {
        var module = angular.module('ebcore');
    });

    beforeEach(inject(function ($injector) {

        var sut = $injector.get('dbTranslate');
        var test = $injector.get('$q');
    }));

    it("dbTranslate.translate", function () {
        $cacheFactory = function () { };
        $cacheFactory.get = function () { };
        //$dbTranslateCache = dbTranslate.dbTranslateCache($cacheFactory);
    });
});

我尝试测试的服务看起来像这样(打字稿):

export class dbTranslate {
    static $inject = ['$q', '$http', 'dbTranslateCache'];

    constructor(private $q: ng.IQService, private $http: ng.IHttpService, private dbTranslateCache: ng.ICacheObject) {

    }

    ensure(texts: string[]) {
        var deferred = this.$q.defer();
        var missing = [];
        var values = {};

        texts.forEach(text => {
            var value = this.dbTranslateCache.get(text);
            if (typeof value === 'undefined') {
                missing.push(text);
            } else {
                values[text] = value;
            }
        });

        if (missing.length == 0) {
            deferred.resolve(values);
        } else {
            this.$http.post("/pub/texts/fetchText", missing).then(result => {
                for (var prop in result.data) {
                    if (result.data.hasOwnProperty(prop)) {
                        this.dbTranslateCache.put(prop, result.data[prop]);
                        values[prop] = result.data[prop];
                    }
                }
                deferred.resolve(values);
            }, error => {
                deferred.reject();
            });
        }

        return deferred.promise;
    }

    translate(text: string): string {
        return this.dbTranslateCache.get(text);
    }
}

如果我尝试调试单元测试,我可以看到module._invokeQueue包含我的服务。

所以任何想法为什么我不能通过$ injector找到我的服务?我错过了什么?

0 个答案:

没有答案