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()

posted @ 2015-06-09 15:17  byAlice  阅读(192)  评论(0)    收藏  举报