如何窥探 Angular provider 工厂方法?
How to spyOn Angular provider factory method?
在Jasmine中,你可以spyOn(object, 'function')。
我正在尝试监视用作 "provider()" 的提供程序。
如何窥探它?
提供商看起来像这样:
providers.provider('telecom', function() {
this.$get = function() {
return function() {
return 'something';
}
}
}
在controller中,可以这样使用:
controllers.controller('ctrl', function(telecom) {
var isp = telecom();
});
对于object.method(),我们可以spyOn(object, 'method')。
provider() 呢?
我用谷歌搜索,找不到任何有用的信息。
我试过 spyOn(provider),但我收到错误提示 "undefined() method does not exist".
我什至尝试模拟提供者,但没有成功。 (http://www.sitepoint.com/mocking-dependencies-angularjs-tests/)
您可以使用 createSpy:
describe('Describe', function() {
var $scope, createController;
var telecomSpy = jasmine.createSpy('telecomSpy');
beforeEach(module('myApp'));
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new();
createController = function() {
$controller('MyController', {
$scope: $scope,
telecom: telecomSpy
});
};
}));
it('It', function() {
expect(telecomSpy).not.toHaveBeenCalled();
createController();
expect(telecomSpy).toHaveBeenCalled();
});
});
在Jasmine中,你可以spyOn(object, 'function')。 我正在尝试监视用作 "provider()" 的提供程序。 如何窥探它?
提供商看起来像这样:
providers.provider('telecom', function() {
this.$get = function() {
return function() {
return 'something';
}
}
}
在controller中,可以这样使用:
controllers.controller('ctrl', function(telecom) {
var isp = telecom();
});
对于object.method(),我们可以spyOn(object, 'method')。 provider() 呢?
我用谷歌搜索,找不到任何有用的信息。 我试过 spyOn(provider),但我收到错误提示 "undefined() method does not exist".
我什至尝试模拟提供者,但没有成功。 (http://www.sitepoint.com/mocking-dependencies-angularjs-tests/)
您可以使用 createSpy:
describe('Describe', function() {
var $scope, createController;
var telecomSpy = jasmine.createSpy('telecomSpy');
beforeEach(module('myApp'));
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new();
createController = function() {
$controller('MyController', {
$scope: $scope,
telecom: telecomSpy
});
};
}));
it('It', function() {
expect(telecomSpy).not.toHaveBeenCalled();
createController();
expect(telecomSpy).toHaveBeenCalled();
});
});