最佳答案
当单元测试一个 Angular 工厂(使用 Karma + Jasmine)时,我如何将存根依赖项注入到被测试的工厂中?
这是我的工厂:
mod = angular.module('myFactoryMod', []);
mod.factory('myFactory', [
'$log', 'oneOfMyOtherServices', function($log, svc) {
return makeSomethingThatDoesSomethingWithTheseDependencies($log, svc);
}
]);
实例化我的工厂时需要 oneOfMyOtherServices
。
这是我的测试:
it('can get an instance of my factory', function() {
var oneOfMyOtherServicesStub;
angular.mock.module('myFactoryMod');
oneOfMyOtherServicesStub = {
someVariable: 1
};
//****How do I get my stub in my target? ****
angular.mock.inject(['myFactory', function(target) {
expect(target).toBeDefined();
}
]);
})
注意: 我知道 $controller
允许控制器使用这种方法,但是我没有看到工厂使用这种方法。