尝试对我的角度服务进行单元测试时出现以下错误。
错误:[$ 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找到我的服务?我错过了什么?