jasmine实例02
第一部分说了ajax中的success和error,这回我们说下ajax的done()和fail(),
这测试这个done和fail的时候,费了好大的劲,因为这次的done()虽然和success是一个意思,但是他俩的mock进去方式却存在的 明显的不同,研究好半天后,在一个网站上找到了一些思路(http://stackoverflow.com/questions/12080087 /how-to-test-the-done-and-fail-deferred-object-by-using-jasmine),这里面说了一个 重点就是我们要在每个测试点上面new一个
var deferred = new $.Deferred();
原代码中的是这样的:
$.ajax(url, options)
.done(function(data) {
if (data.dialogMessage) {
siatErrorDialog(data.dialogMessage);
}
})
测试代码中的是:
var deferred = new $.Deferred();
spyOn($, "ajax").and.callFake(function() {return deferred;});
deferred.resolve({
"dialogMessage":"error",
});
这样写的话我们就可以进入到done()了,同样fail()也是如此:
源代码:
$.ajax(url, options)
.fail(function(jqXHR, textStatus, errorThrown) {
if (jqXHR.status === 403) {
location.href = “#hash”;
}
console.log(jqXHR);
console.log(textStatus);
});
测试代码中的是:
var deferred = new $.Deferred();
deferred.reject(
{"status" : "NG"},
"error",
{"message" : "it has an errormessage"}
);
记住两个关键字:resolve()和reject(),done()用的是resolve(),fail()用的是reject()

浙公网安备 33010602011771号