繁体   English   中英

在单元测试中未注入Angular服务

[英]Angular service not injected in unit test

嗨,我有一个简单的测试:

define(["angular", "angularMocks", "app", "normalizer"], function(angular, mocks, app) {

  describe("service: normalizer", function () {
    var normalizerService;

    beforeEach(module("ADB"));

    beforeEach(inject(function(_normalizer_) {
      normalizerService = _normalizer_;
    }));

    var params = {};
    var metadata = {};
    var data = {};

    var response = normalizerService.topLanguagesHybrid(metadata, data, params);

    var type = typeof response;
    expect(type).toEqual("object");

  });
});

问题是永远不会设置标准化服务,在cmd中我看到以下错误:

 TypeError: 'undefined' is not an object (evaluating 'normalizerService.topLanguagesHybrid')

注意:我在该项目中使用requirejs,可以看到标准化程序服务文件正在加载到浏览器中(及其所有依赖项)。 似乎只是没有注入。 我做错了什么?

链接到错误

定义服务时,您忘记定义规范化器,因此正确的语法是

define(["angular", "angularMocks", "app", "normalizer"], function(angular, mocks, app, normalizerService) {

  describe("service: normalizer", function () {
    var normalizerService;

    beforeEach(module("ADB"));

    var params = {};
    var metadata = {};
    var data = {};

    var response = normalizerService.topLanguagesHybrid(metadata, data, params);

    var type = typeof response;
    expect(type).toEqual("object");

  });
});

您忘记为测试场景定义it,而是在每个“ it”函数之前运行。

define(["angular", "angularMocks", "app", "normalizer"], function(angular, mocks, app) {

  describe("service: normalizer", function () {
    var normalizerService;

    beforeEach(module("ADB"));

    beforeEach(inject(function(_normalizer_) {
      normalizerService = _normalizer_;
    }));

    it('should define topLanguageHybrid method', function() {
      var params = {};
      var metadata = {};
      var data = {};

      var response = normalizerService.topLanguagesHybrid(metadata, data, params);

      var type = typeof response;
      expect(type).toEqual("object");
    });
  });
});

有关茉莉花的更多信息: 茉莉花文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM