0

什么

在我的 AngularJS 应用程序中,我试图监视一些内部结构,例如angular.moduleserviceProvider.

如何

我成功窥探angular.module

var moduleCalls = spyOn(angular, 'module').and.callThrough();
moduleCalls.calls.count() //-> 6

我试图监视,angular.module(...).service但它似乎从未被调用

var serviceCalls = spyOn(angular.module('MyApp'), 'service').and.callThrough();
serviceCalls.calls.count() //-> 0

或更通用的.provider

var serviceCalls = spyOn(angular.module('MyApp'), 'provider').and.callThrough();

为什么

此时的用例是假设的,我希望能够在创建时审核所有用户定义的组件(如模块、工厂、服务、指令、控制器等)。

同样,是否可以链接and.callThrough()and.callFake()以便我可以发布到审核日志。

4

1 回答 1

0

Asangular.module('myApp').service()实际上只是在$provide服务上调用相同方法的简写。我认为您可以像这样监视那些服务注册方法:

angular.module('ng').config(function ($provide) {
    serviceCalls = spyOn($provide, 'service').and.callThrough();
});

我仍然不确定您的应用程序将在何处/何时调用该.service()函数,但这可能在单元测试中使用angular-mock.js

beforeEach(function () {
  module('myApp');

  module(function ($provide) {
    serviceCalls = spyOn($provide, 'service').and.callThrough();
});
于 2014-07-21T14:19:44.940 回答