gpt4 book ai didi

javascript - 测试包含异步代码的函数

转载 作者:行者123 更新时间:2023-11-28 02:20:57 25 4
gpt4 key购买 nike

通过 qUnit,如果您的测试中有异步代码,我了解如何使用 asyncTest(),但是如果您有一个包含异步代码的函数怎么办?

换句话说,异步请求不在测试范围内,而只是正在测试的代码的一部分。

以这段代码为例:

function makeAjaxCall(){
$.get('/mypage', {}, function(data){
// Do something with `data`
},'json');
}

如何在测试中调用 makeAjaxCall(),然后对 ajax 请求返回的 data 运行测试?

最佳答案

您可以使用jQuery Global Ajax Event Handlers在这个情况下。在调用之前绑定(bind)它,完成测试后解除绑定(bind),可能通过 Qunit 中的模块方法。

类似(未经测试):

asyncTest(function() {
expect(1);

$(document).ajaxSuccess(function(e, xhr, settings) {
var jsonRep = JSON.parse(xhr.responseText);
// assert on jsonRep
//ok(true);
});
$(document).ajaxError(function(e) {
ok(false);
});
$(document).ajaxComplete(function() {
start();

$(document).unbind('ajaxSuccess ajaxError ajaxComplete');
});

makeAjaxCall();
});

请注意,全局处理程序 do not have access to the parsed contents ,并且您必须自己使用 JSON.parse 重新解析它们。不理想,但我不知道还有其他方法。

关于javascript - 测试包含异步代码的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15673578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com