Heres was für meinen Service sieht aus wieWie testet man eine eckige Service-Funktion verschachtelte Versprechen?
TestService.initializeDefaults = function() {
var qPromise = $q.defer();
$q.all({localResource : localResource.fetch(),
item : itemResource.fetch()}).then(function(directories){
//stuff happens with directories
$q.all({
thing1 : anotherThingFetch.fetch(),
thing2: someThingFetch.fetch(),
thing3: thingFetch.fetch()
}).then(function(funData) {
//stuff happens with the data
preventiveServicesService.fetch().then(function() {
//stuff happens
});
});
}.bind(this));
return qPromise;
};
Und Im Versuch, Karma zu verwenden, um zu testen, dass alle Funktionen innerhalb dieser initializeDefaults Methode ausgeführt haben. Das bedeutet, dass im Wesentlichen alle Fohlen passiert sind. Heres, was ich habe, dass im Test so weit funktioniert:
it("should initialize defaults (Scenario 1)", function() {
service.initializeDefaults();
rootScope.$apply();
expect(localResourceMock.fetch).toHaveBeenCalledWith();
expect(itemResourceMock.fetch).toHaveBeenCalledWith();