使用Quit模块setUp tearDown测试ajax



我发现使用Quit测试jQueryajax非常困难。

特别是,我很难尝试使用Quit的模块结构和setUp和tearDown方法来减少重复代码。以下工作:

test("ajax request is 200 OK", function () {
var xhr = sinon.useFakeXMLHttpRequest();
var requests = sinon.requests = [];
xhr.onCreate = function (request) {
    requests.push(request);
};
var callback_success = sinon.spy();
$.ajax('/course/data', { 
    success: callback_success,
});
equal(sinon.requests.length, 1);
equal(sinon.requests[0].url, "/course/data");

requests[0].respond(200, { "Content-Type": "application/json" }, '[]');
ok(callback_success.called);
});

我有一个JSFiddle,它显示了一个失败的测试(编号11)。(之前的测试是我写的,当时我正试图了解一切)。

具体来说,我的问题是:当我在第115行的全局范围中声明了var requests;时,为什么测试报告失败并带有"requests is undefined"?

感谢您的解释!(编辑:由于某种原因,链接的JSFiddle显示了sinon.js的问题,当我从我的fiddle帐户运行JSFiddl时不明显?)

找到了在我的JSFiddle中未定义请求的问题的解决方案。我的测试模块的设置函数从未被调用过。出于某种原因,我使用camelCase来定义设置和拆卸:

setUp: function () { .....},
tearDown: function() {....}

当然什么时候应该只是普通的

setup: function () {...},
teardown: function () {...}

所以,基本上是我的一个区分大小写的错误,再加上我发现ajax、qunit和sinon非常令人费解。

最新更新