2016-07-11 11 views
0

Ich versuche, Tests für einen Anbieter zu erstellen, aber ich kann nicht scheinen, es im Test zu konfigurieren. Hier ist mein Provider, mit dem ich einen Dienst mit einer URL zu konfigurieren, wenn es instanziiert wird:Wie konfiguriert man Angular Provider im Komponententest?

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

Hier ist mein Test-Setup:

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

var HttpDataProvider; 

beforeEach(inject(function (_HttpData_) { 

    HttpDataProvider = _HttpData_; 

})); 

Ich habe versucht zu tun:

beforeEach(function() { 
    angular.mock.module('PRXHttpData').config(function(HttpData){ 
     HttpData.setUrl('test/url'); 
    }); 
}); 

Aber Es gibt mir den Fehler "Kann nicht lesen Eigenschaft 'Config' von undefined"

Wie kann ich meinen Anbieter in meinem Test konfigurieren?

Antwort

1

angular.mock.module() gibt kein angulares Modul zurück und kann nicht verkettet werden.

Wie in the manual gesagt, akzeptiert sie Funktionen als Argumente:

Eine beliebige Anzahl von Modulen, die als String Aliase dargestellt werden oder als anonymer Modul Initialisierungsfunktionen.

Diese Funktionen werden während der Phase config aufgerufen. Es sollte

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

Wenn ich das tue bekomme ich einen 'unbekannten Provider' Fehler – Dallin

+0

Ich habe den Fehler korrigiert, der aus dem ursprünglichen Code eingefügt wurde. Es sollte 'HttpDataProvider' sein. – estus

Verwandte Themen