Jquery QUnit和一个失败的JSONP场景
我想测试我的web应用程序是否处理故障场景,并使用QUnit显示相应的错误消息 我的应用程序执行JSONP请求以获取其初始化内容。我想测试启动时数据源不可用的情况。这个场景会导致底层JQuery代码出错,我认为QUnit正在拦截并捕获它作为失败的断言,即使这是预期的行为 我的应用程序代码如下所示:Jquery QUnit和一个失败的JSONP场景,jquery,ajax,json,jsonp,qunit,Jquery,Ajax,Json,Jsonp,Qunit,我想测试我的web应用程序是否处理故障场景,并使用QUnit显示相应的错误消息 我的应用程序执行JSONP请求以获取其初始化内容。我想测试启动时数据源不可用的情况。这个场景会导致底层JQuery代码出错,我认为QUnit正在拦截并捕获它作为失败的断言,即使这是预期的行为 我的应用程序代码如下所示: loadContents() { $.ajax({ url: initURL, dataType: 'jsonp', timeout: time
loadContents() {
$.ajax({
url: initURL,
dataType: 'jsonp',
timeout: timeout,
success: initializeDisplay,
error: displayErrorMessage,
});
}
asyncTest("Invalid initialization host", 1, function() {
initURL = invalidURL;
loadPageContents();
index = $("#error-message-div").text().indexOf(errorMessage);
ok(index > -1, "Error message not found");
})
我的测试用例如下所示:
loadContents() {
$.ajax({
url: initURL,
dataType: 'jsonp',
timeout: timeout,
success: initializeDisplay,
error: displayErrorMessage,
});
}
asyncTest("Invalid initialization host", 1, function() {
initURL = invalidURL;
loadPageContents();
index = $("#error-message-div").text().indexOf(errorMessage);
ok(index > -1, "Error message not found");
})
当我运行测试时,我得到一个额外的断言,它总是失败。该断言包含以下消息:加载带有JSONP GET请求URL的脚本时出错
我认为我遇到的问题是,由于从来没有执行过JSONP回调,它会抛出一个异常,QUnit认为这是一个失败的断言
你知道如何在不将异常注册为失败的情况下执行测试吗
更新-
要澄清的是,QUnit断言按预期工作,但是我不知何故得到了一个额外的断言,它总是失败
谢谢 知道原因是JSONP调用在后台失败,为了在测试期间抑制此错误,我必须在预期错误时向document对象添加一个错误处理程序
errorNamespace = "error.test"
$(document).on(errorNamespace, function(event) {
ok(true, "Received expected error");
// Prevent the error from propagating into the assertion
event.stopPropagation();
// Remove the error handler to allow other errors to flow
$(document).off(errorNamespace);
});
不幸的是,错误事件不包含任何信息来帮助我验证捕获的错误是否是我预期的错误,这可能会很麻烦