如何在单元测试中配置Angular Provider?

时间:2016-07-11 18:11:57

标签: angularjs unit-testing ngmock

我正在尝试为提供商创建测试,但我似乎无法在测试中对其进行配置。这是我的提供商,我在实例化时使用网址配置服务:

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');
     });
 });

但它给了我错误"无法读取属性' config'未定义"

如何在测试中配置我的提供商?

1 个答案:

答案 0 :(得分:1)

angular.mock.module()没有返回Angular模块,也无法链接。

the manual所述,它接受函数作为参数:

  

任意数量的模块,表示为字符串别名或匿名模块初始化函数。

config阶段调用这些函数。它应该是

angular.mock.module('PRXHttpData', function(HttpDataProvider){ ... });