Angular 违反要求的工厂定义

Angular factory definition breaking with requires

我有一个 Angularjs 工厂定义如下:

angular.module('myapp').factory('myService', myService);
function myService($http) {

但是我的 jasmine 测试没有发现这个。但是,如果我添加一个空的 requires 数组,它可以在测试中运行,但应用程序本身会中断。

angular.module('myapp', []).factory('myService', myService);
function myService($http) {

https://code.angularjs.org/1.5.8/docs/api/ng/function/angular.module 中查看它所说的 requires 属性

If specified then new module is being created. If unspecified then the module is being retrieved for further configuration.

但我不明白这会如何破坏事情,以及如何让测试和应用程序都正常工作。

该服务包含在测试文件中:

describe('myService', function() {
  var myService;
  beforeEach(module('myapp'));
  beforeEach(inject(function($injector) {
    myService = $injector.get('myService');
  }));
  ...

问题是我的模块依赖项被定义的地方有

angular.module('tcom.search', ['ngSanitize', 'ui.bootstrap'])

所以我不得不更新我的 grunt 配置以包含 bower 组件

    karma: {
      unit: {
        options: {
          frameworks: ['jasmine'],
          singleRun: true,
          browsers: ['PhantomJS'],
          files: [
            'bower_components/angular/angular.js',
            'bower_components/angular-mocks/angular-mocks.js',
            'bower_components/angular-sanitize/angular-sanitize.js',
            'bower_components/angular-bootstrap/ui-bootstrap.js',