私のジャスミンテストでAngularからのhttp呼び出しからの応答を模擬しようとしています。Jasmineでの角度付きHTTP応答がコールバック関数に入力されない
私は 'ImageService'というサービスを持っています。これには 'create'という1つの機能があります。私はエラーをテストしようとしているので、拒否された約束を作成し返すことを監視しています。
this.create = function(image) {
return imageApi.post(image);
};
imageApi変数がRestangularインスタンスである:
は、ここに私のサービスです。私はそれが私のコントローラのエラーコールバックにその方法を作っていないこの約束を拒否しておりますが
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;
});
:
私のテストでは、このようになります。私のコントローラからの呼び出しは、このように見えます。
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"));
}
});
誰でも問題を見ることができますか?
ありがとうございます!
あなたは私たちにテストコードの多くを示していることはできますか?テスト全体で、ジャスミンの期待を使用していることを意味します。 – sam
テストで$ digest()を実行していないと思われます。角度はhttpコールを引き起こさないことを意味します。 – sam
@sam thatsは真です。私はそれを試みます。 $ digest()の呼び出しは、スパイが設定された後に呼び出される必要がありますか? –