Gulp 测试找不到模块

Gulp test can not find module

我使用 gulp angular 生成了我的 Web 应用程序。然后我创建了一个服务,想测试一下。

模块文件是app.module.js

angular.module('text', []);

服务文件是text.service.js

(function () {
  'use strict';
  angular.module('text')
    .factory('description',TextService);

  TextService.$inject = ['$http']

  function TextService($http) {

    return {
      QueryStaticText: queryStaticText

  };

    function queryStaticText(link) {
      return link;
    }
  }

})();

测试文件是text.service.spec.js

'use strict';

describe('TextService', function () {
  var description;

  beforeEach(function () {

    module('text');

    inject(function (_description_) {
      description = _description_;
    });

  });

  it('should return text', function () {
    expect(description.QueryStaticText("Hello")).toEqual("Hello anu");
  });
});

在控制台中我执行了 gulp 测试,我收到了错误消息

[22:02:44] Using gulpfile /Volumes/Developer/angularjs/project/gulpfile.js
[22:02:44] Starting 'test'...
[22:02:45] Starting Karma server...
INFO [karma]: Karma v0.12.31 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.8 (Mac OS X)]: Connected on socket 1KW_uYCk45moVKwfgAd2 with id 19804685
PhantomJS 1.9.8 (Mac OS X) ERROR
  Error: [$injector:nomod] Module 'text' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
  http://errors.angularjs.org/1.3.12/$injector/nomod?p0=text
  at /Volumes/Developer/angularjs/project/bower_components/angular/angular.js:1769



/Volumes/Developer/angularjs/project/gulp/unit-tests.js:30
      throw err;

文本模块没有加载,如何加载?

beforeEach(module('text'));
beforeEach(inject(function (_description_) {
  description = _description_;
}));

基本上,模块和注入的 return 值需要作为 beforeEach 的参数。参见 https://docs.angularjs.org/guide/module#unit-testing

您似乎没有按顺序在 Karma 中加载文件。在你里面 karma.conf.js 应该有一个文件列表。加载应用程序模块,然后加载 javascript 的其余部分。这是一个 post 有 same problem.

例如:

files: [
  'bower_components/angular/angular.js',
  'bower_components/angular-mocks/angular-mocks.js',
  'bower_components/angular-animate/angular-animate.js',

  'app/**/*.module.js',  // Loads all files with .module.js
  'app/**/*.js',         // Load the rest of your .js angular files
  'test/**/*.js'         // Load your tests
],

使用 angularFilesort 按依赖项排序文件:

// gulp/unit-tests.js
...
// around line 36 inserted the following line:
.pipe($.angularFilesort())

所以应该看起来像:

gulp.src(srcFiles)
  .pipe($.angularFilesort())
  .pipe(concat(function(files) {
    callback(bowerDeps.js
      .concat(_.pluck(files, 'path'))
      .concat(htmlFiles)
      .concat(specFiles));
  }))