我正在尝试使用Jest(使用https://jestjs.io/docs/en/asynchronous.html作为参考)测试以下AJAX调用。 AJAX调用应发布到我的Web服务并返回JSON数据,但测试失败并出现错误。该测试位于main.test.js中,我正在使用npm test
在Package Manager控制台(在Visual Studio中)中运行它。
我尝试使用XMLHttpRequest实现AJAX请求,但是测试仍然失败,并出现相同的错误,并且我没有获得任何数据。我也尝试设置参数async:false,但这会导致测试挂起而没有完成。
//main.js
function getData(handleData) {
$.ajax({
type: "POST",
data: '{choice:"'+option+'"}',
dataType: "json",
url: "WebServiceGrid.asmx/WebserviceFunction",
contentType: "application/json; charset=utf-8",
success: function (response) {
handleData(response);
},
error: function (request, status, error) {
alert(request.responseText);
},
});
function handleData(response) {
return response;
}
}
//main.test.js
test('verifies getData returns data', done => {
function handleData(data) {
expect(data).toBe(/*some JSON data*/);
done();
}
getData(handleData);
}
package.json (Jest setup)
:
"devDependencies": {
"jest": "^24.9.0",
"jest-editor-support": "^25.0.1"
}
"jest": {
"verbose": true,
"setupFiles": [
"./source/setup-jest.js"
],
},
"scripts": {
"test": "jest --detectOpenHandles"
}
//I am including jQuery in my setup-jest.js file:
const $ = require('jquery'); global.$ = global.jQuery = $;
我希望从Web服务中获取JSON数据,但是我看到Jest测试失败并显示以下错误:
超时-在jest.setTimeout.Timeout指定的5000ms超时内未调用异步回调。
我还尝试将Jest超时增加到5000ms以上,但这似乎没有帮助