Ich bin versucht, einige Antworten von einem http Anruf von Angular in meinen Jasmin Tests zu verspotten.Mocking Angular http-Antwort mit Jasmin geht nicht in Callback-Funktion
Ich habe einen Dienst namens ‚Imageservice‘ und dies hat eine Funktion ‚create‘ genannt. Ich spioniere aus und erstelle ein zurückgewiesenes Versprechen, weil ich versuche, Fehler zu testen.
Hier ist mein Service:
this.create = function(image) {
return imageApi.post(image);
};
Die imageApi Variable ist eine Restangular Instanz.
Mein Test sieht wie folgt aus:
spyOn(ImageService, 'create').and.callFake(function() {
var deferred = $q.defer();
deferred.reject({
data: {
status: 400,
errors: {
"image.fileNotImage": "File uploaded is not an image."
}
}
});
return deferred.promise;
});
Obwohl ich dieses Versprechen werde Ablehnung es nicht seinen Weg in den Fehler-Callback meiner Controller macht. Der Anruf von meinem Controller sieht so aus.
ImageService.create(formData)
.then(function(response) {
console.log(response);
vm.imagePreview = response;
createAdMedia(adMedia, response.fileURL);
}, function(error) {
console.log(error);
/**
* If we get no data then we can assume its a 500 or
* 405 error so we give a generic error message
*/
if (error.data.errors) {
var errors = error.data.errors;
for (var key in errors) {
showMessage("errorMessage", DWIN.i18n.t(errors[key]));
}
} else {
showMessage("errorMessage", DWIN.i18n.t("merchant.admedia.failure"));
}
});
Kann jemand ein Problem damit sehen?
Danke!
Können zeigen Sie uns mehr von dem Test-Code? der ganze Test selbst ich meine, dass Jasmin Erwartungen – sam
Ich vermute, Sie verwendet keinen $ Digest() im Test zu tun, was bedeuten würde, dass Winkel nie das HTTP-Aufruf – sam
@ Sam, das ist auslöst, ist wahr, ich bin es nicht. Ich werde das versuchen. Muss der Aufruf von $ digest() aufgerufen werden, nachdem der Spion eingerichtet wurde? –