首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对具有依赖关系的AngularJS工厂进行单元测试

对具有依赖关系的AngularJS工厂进行单元测试
EN

Stack Overflow用户
提问于 2013-05-15 20:53:20
回答 1查看 60.4K关注 0票数 80

在单元测试Angular工厂(使用Karma + Jasmine)时,如何将存根依赖注入被测工厂?

这是我的工厂:

代码语言:javascript
复制
mod = angular.module('myFactoryMod', []);

mod.factory('myFactory', [
  '$log', 'oneOfMyOtherServices', function($log, svc) {
    return makeSomethingThatDoesSomethingWithTheseDependencies($log, svc);
  }
]);

实例化我的工厂时需要使用oneOfMyOtherServices

这是我的测试:

代码语言:javascript
复制
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允许控制器这样做,但我没有看到工厂这样做。

EN

回答 1

Stack Overflow用户

发布于 2014-11-26 15:53:46

@bentsai的评论实际上对测试服务非常有帮助;为了完整性,我添加了一个示例。

这是一个针对jasmine的测试,它所做的大致就是您想要的。注意:这需要包含angular-mocks (这是提供诸如moduleinject的函数)。

代码语言:javascript
复制
describe('app: myApp', function() {
  beforeEach(module('myApp'));
  var $controller;
  beforeEach(inject(function(_$controller_) {
    $controller = _$controller_;
  }));
  // Factory of interest is called MyFactory
  describe('factory: MyFactory', function() {
    var factory = null;
    beforeEach(inject(function(MyFactory) {
      factory = MyFactory;
    }))
    it('Should define methods', function() {
      expect(factory.beAwesome).toBeDefined()
      expect(factory.beAwesome).toEqual(jasmine.any(Function))
    });
  });
});

这是模块和相关工厂定义的存根:

代码语言:javascript
复制
var app = angular.module('myApp', []);
app.factory('MyFactory', function() {
  var factory = {};
  factory.beAwesome = function() {
    return 'Awesome!';
  }
  return factory;
});

在这种情况下,很明显,inject()的使用允许您引入依赖项,就像您在正常的angular应用程序中所期望的那样-因此,您可以构建需求来支持依赖于它们的测试。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16565531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档