在我的AngularJS应用中,我试图窥探angular.module
和serviceProvider
等内部人员。
我成功地监视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()
,以便我可以发布到审核日志。
答案 0 :(得分:0)
因为angular.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();
});