如何在单元测试中配置 Angular Provider?
How to configure Angular Provider in unit test?
我正在尝试为提供商创建测试,但我似乎无法在测试中对其进行配置。这是我的提供者,我正在使用它配置一个 url 的服务,当它被实例化时:
angular.module('PRXHttpData', [])
.provider('HttpData', function(){
var url;
this.setUrl = function(_url_){
url = _url_;
};
this.$get = function(){
return new HttpDataService(url);
}
});
function HttpDataService(url){
this.url = url;
}
这是我的测试设置:
beforeEach(function () {
angular.mock.module('PRXHttpData');
});
var HttpDataProvider;
beforeEach(inject(function (_HttpData_) {
HttpDataProvider = _HttpData_;
}));
我试过:
beforeEach(function () {
angular.mock.module('PRXHttpData').config(function(HttpData){
HttpData.setUrl('test/url');
});
});
但它给了我错误 "Cannot read property 'config' of undefined"
如何在我的测试中配置我的提供商?
angular.mock.module()
不是 return 一个 Angular 模块,不能链接。
如the manual所述,它接受函数作为参数:
any number of modules which are represented as string aliases or as anonymous module initialization functions.
这些函数在 config
阶段调用。应该是
angular.mock.module('PRXHttpData', function(HttpDataProvider){ ... });
我正在尝试为提供商创建测试,但我似乎无法在测试中对其进行配置。这是我的提供者,我正在使用它配置一个 url 的服务,当它被实例化时:
angular.module('PRXHttpData', [])
.provider('HttpData', function(){
var url;
this.setUrl = function(_url_){
url = _url_;
};
this.$get = function(){
return new HttpDataService(url);
}
});
function HttpDataService(url){
this.url = url;
}
这是我的测试设置:
beforeEach(function () {
angular.mock.module('PRXHttpData');
});
var HttpDataProvider;
beforeEach(inject(function (_HttpData_) {
HttpDataProvider = _HttpData_;
}));
我试过:
beforeEach(function () {
angular.mock.module('PRXHttpData').config(function(HttpData){
HttpData.setUrl('test/url');
});
});
但它给了我错误 "Cannot read property 'config' of undefined"
如何在我的测试中配置我的提供商?
angular.mock.module()
不是 return 一个 Angular 模块,不能链接。
如the manual所述,它接受函数作为参数:
any number of modules which are represented as string aliases or as anonymous module initialization functions.
这些函数在 config
阶段调用。应该是
angular.mock.module('PRXHttpData', function(HttpDataProvider){ ... });