Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单元测试中未注入角度服务_Javascript_Angularjs_Unit Testing_Requirejs_Karma Runner - Fatal编程技术网

Javascript 单元测试中未注入角度服务

Javascript 单元测试中未注入角度服务,javascript,angularjs,unit-testing,requirejs,karma-runner,Javascript,Angularjs,Unit Testing,Requirejs,Karma Runner,嗨,我有一个简单的测试: define(["angular", "angularMocks", "app", "normalizer"], function(angular, mocks, app) { describe("service: normalizer", function () { var normalizerService; beforeEach(module("ADB")); beforeEach(inject(function(_normali

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

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");

  });
});
问题是从未设置normalizer服务,在cmd中我看到以下错误:

 TypeError: 'undefined' is not an object (evaluating 'normalizerService.topLanguagesHybrid')
注意:我在这个项目中使用的是requirejs,我可以看到normalizer服务文件及其所有依赖项都被加载到浏览器中。似乎只是没有注射。 我做错了什么


在定义服务时,您忘记定义normalizer,因此正确的语法是

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");
    });
  });
});

有关jasmine的更多信息:

我收到了相同的错误+加上此新错误:服务:normalizer遇到声明异常失败。是相同的错误:。我想我必须以某种方式注射它。感谢您的帮助似乎您的测试运行程序中未包含ngSanitize脚本文件,或者模块未加载,是否在ADB模块中使用ngSanitize?如果是,请尝试将其添加为依赖项。仍然出现错误,表明注入服务存在问题。我在控制台中看到的错误如下:。我正在使用您发布的代码。请参阅问题以获取错误链接角度错误解释