Angularjs中的玩笑如何处理我所有的模块依赖项

时间:2019-03-16 07:44:04

标签: javascript angularjs unit-testing jestjs

已更新:我没有使用任何模块加载程序,因为这是一个旧项目,嗯,所以我只是通过index.html标签将所有依赖项导入了script


我的AngularJS具有这样的结构:

  • app.js
angular.module('app', ['LocalStorageModule', 'ngCookies', ...])
  • testController
angular.module('app').controller('testController', function(){})

现在我想测试testController,所以我开玩笑的UT代码:

  • testController.spec.js
require('./testController.controller')

describe('TestController', () => {
  beforeEach(angular.mock.module('app'));
})

但是现在我得到一个错误:

Module 'app' is not available

这意味着我必须导入app.js,但是如果导入app.js,我也会得到

Failed to instantiate module LocalStorageModule due to: Module 'LocalStorageModule' is not available!

所以我必须在我的每个测试文件中导入我的所有依赖项(鲍尔安装了20个以上依赖项)?我认为这不是一个好方法。如何处理这个解决方案?导入我的bower安装的所有组件?

1 个答案:

答案 0 :(得分:0)

问题似乎是angular.js依赖项注入。因为您在应用模块中声明了一些依赖项。您需要模拟您的应用模块,然后注入依赖项。

describe('TestController', () => {
  beforeEach(
      angular.mock.module('app')
  );

  let _localStorageModule;
  let _ngCookies;


  beforeEach(
      inject((LocalStorageModule, ngCookies) => {
          _localStorageModule = LocalStorageModule;
          _ngCookies = ngCookies;
      })
  );
})