【问题标题】:How to configure Angular Provider in unit test?如何在单元测试中配置 Angular Provider?
【发布时间】:2016-07-11 18:11:57
【问题描述】:

我正在尝试为提供者创建测试,但我似乎无法在测试中对其进行配置。这是我的提供程序,当它被实例化时,我正在使用它配置一个带有 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');
     });
 });

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

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

【问题讨论】:

    标签: angularjs unit-testing angularjs-ngmock


    【解决方案1】:

    angular.mock.module() 不返回 Angular 模块并且不能被链接。

    正如the manual 中所说,它接受函数作为参数:

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

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

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

    【讨论】:

    • 我已经更正了从原始代码粘贴的错误。应该是HttpDataProvider
    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 2019-04-21
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多