Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了单元测试具有依赖性的AngularJS工厂大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当单元测试一个Angular工厂(使用Karma Jasmine)时,如何将一个stub依赖注入到测试的工厂?

这里是我的工厂:

@H_893_3@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();
  }));
});

大佬总结

以上是大佬教程为你收集整理的单元测试具有依赖性的AngularJS工厂全部内容,希望文章能够帮你解决单元测试具有依赖性的AngularJS工厂所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。