在Jasmine嘲笑xhr

时间:2016-05-26 07:35:04

标签: javascript jquery unit-testing jasmine

我有一个关于在Jasmine中嘲笑xhr的问题。我有以下Javascript情况:

function Test1(){
 // some code
 Test2({ readyState: 4, responseText: "", status: 200, statusText: "OK" });
}
function Test2(xhr){
    var token = xhr.getResponseHeader("csrftoken");
    var csrfCtrl = $("#token");
    if (token != null && csrfCtrl != null) {
        csrfCtrl.val(token);
    }
}

现在我想窥探xhr.getResponseHeader()函数,但我无法知道如何做到这一点。

我试过这样的事情:

describe("1 || Test ||", function () {    
        // Before we describe the tests we first need to setup a few things
        beforeEach(function () {
            // Load the first function of the HTML fixtures (htmlfixtures.js)
            setUpHTMLFixture1();
            jQuery.xhr = spyOn(jQuery.fn.ajax.xhr, "getResponseHeader").and.returnValue("null");             
        });
        it("1.1 # Check xhr functionality", function () {
          expect(jQuery.xhr).toHaveBeenCalled();    
        });
    });

但那没用。有任何想法吗?也许重要的是要注意。我使用jQuery 1.8。

1 个答案:

答案 0 :(得分:1)

SinonJS库允许您创建虚假的XMLHttpRequests和响应,以便您可以验证请求是否正确形成,并且您的代码正确处理响应。一个简单的例子来说明基本技术:

GitHub