我使用qunit和mockjax来测试我的前端代码。 AJAX的测试中mockjax's own test code结构看起来像这样(jsfiddle):qunit + mockjax:我应该在异步测试中调用mockjaxClear?
var testURL = "/test/data",
testData = { a: 1, b: "c" };
asyncTest("AJAX response test", 1, function() {
$.mockjax({
url: testURL,
responseText : JSON.stringify(testData)
});
$.ajax({
url: testURL,
dataType: "json",
success: function(data) {
deepEqual(data, testData, 'AJAX response is OK');
},
complete: function() {
start();
}
});
$.mockjaxClear();
});
* $.mockjaxClear()
Removes all mockjax handlers.
我不明白的是为什么mockjaxClear
是$.ajax()
呼叫后立即调用。问题是,如果它做了某种清理,就像文档中所说的那样,这个清理将在 AJAX响应到达之前运行(请参阅this jsfiddle的控制台)。对我来说,在complete
事件的处理程序中进行清理似乎更符合逻辑。 任何人都可以解释为什么最好在$.ajax()
之后调用mockjaxClear?
自从jquery-mockjax v1.6.0发布2014-10-09,'$ .mockjaxClear()'已被重命名为'$ .mockjax.clear()'。请参阅[ChangeLog](https://github.com/jakerella/jquery-mockjax/blob/master/CHANGELOG.md) – knb