单元测试具有依赖性的AngularJS工厂
发布时间:2020-12-17 09:07:41 所属栏目:安全 来源:网络整理
导读:当单元测试一个Angular工厂(使用Karma Jasmine)时,如何将一个stub依赖注入到测试的工厂? 这里是我的工厂: mod = angular.module('myFactoryMod',[]);mod.factory('myFactory',[ '$log','oneOfMyOtherServices',function($log,svc) { return makeSomething
当单元测试一个Angular工厂(使用Karma Jasmine)时,如何将一个stub依赖注入到测试的工厂?
这里是我的工厂: 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(); } ]); }) N.B.我知道$控制器允许这个控制器,但我没有看到一个等价的工厂。
有两种方法来完成这样的事情,我知道:
>使用$ provide和一个匿名模块注入模拟。 第二个选项只有当你确切知道测试中的代码将调用注入的服务,你可以很容易地模拟它们的工作。由于您似乎正在访问服务(而不是方法)上的数据属性追求第一个选项可能是最好的。 使用$ provide大致看起来像这样: describe('myFactory',function () { // Load your module. beforeEach(module('myFactoryMod')); // Setup the mock service in an anonymous module. beforeEach(module(function ($provide) { $provide.value('oneOfMyOtherServicesStub',{ someVariable: 1 }); })); it('can get an instance of my factory',inject(function(myFactory) { expect(myFactory).toBeDefined(); })); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |