Javascript Jest AJAX单元测试不返回数据
我试图使用Jest(用作参考)测试以下AJAX调用。AJAX调用应该发送到我的web服务并返回JSON数据,但测试失败并出现错误。测试在main.test.js中,我正在包管理器控制台(在Visual Studio中)中使用:Javascript Jest AJAX单元测试不返回数据,javascript,jquery,ajax,jestjs,Javascript,Jquery,Ajax,Jestjs,我试图使用Jest(用作参考)测试以下AJAX调用。AJAX调用应该发送到我的web服务并返回JSON数据,但测试失败并出现错误。测试在main.test.js中,我正在包管理器控制台(在Visual Studio中)中使用:npm test运行它 我已经尝试过使用XMLHttpRequest实现AJAX请求,但是测试仍然失败,出现了相同的错误,并且我没有返回任何数据。我还尝试设置参数async:false,但这会导致测试挂起而不完成 //main.js function getData(han
npm test
运行它
我已经尝试过使用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;
}
}
package.json(Jest设置)
:
//我正在setup-jest.js文件中包含jQuery:
const$=require('jquery');全局。$=global.jQuery=$;
我希望从我的web服务获取JSON数据,但我看到Jest测试失败,出现以下错误:
超时-在jest.setTimeout.Timeout指定的5000ms超时内未调用异步回调
我还尝试将Jest超时增加到5000ms以上,但这似乎没有帮助我不知道
getData
如何独立工作;您正在声明一个函数handleData
,该函数将隐藏同名参数。您的测试可能应该调用getData
,而不是声明它?还要注意,所有这些代码都是服务器端代码,但jQuery是客户端库;它在浏览器中运行。节点也没有警报
。使用而不是$.ajax
。同样,据我所知,main.jsgetData
根本无法正常运行;开坏代码的玩笑没有多大意义。这里有一个对我来说最简单的设置:对于您的第一条评论(您的测试可能应该调用getData,而不是声明它?)很抱歉,这是一个输入错误,声明应该是handleData而不是getData(我已经修复了它)。关于你的第二条评论,我实际上能够为客户端jQuery命令(如jQuery选择器、长度、select2等)编写jest测试并对其进行控制台操作?我不知道getData
本身是如何工作的;您正在声明一个函数handleData
,该函数将隐藏同名参数。您的测试可能应该调用getData
,而不是声明它?还要注意,所有这些代码都是服务器端代码,但jQuery是客户端库;它在浏览器中运行。节点也没有警报
。使用而不是$.ajax
。同样,据我所知,main.jsgetData
根本无法正常运行;开坏代码的玩笑没有多大意义。这里有一个对我来说最简单的设置:对于您的第一条评论(您的测试可能应该调用getData,而不是声明它?)很抱歉,这是一个输入错误,声明应该是handleData而不是getData(我已经修复了它)。关于您的第二条评论,我实际上能够为客户端jQuery命令(如jQuery选择器、长度、select2等)编写jest测试并进行控制台输出?
//main.test.js
test('verifies getData returns data', done => {
function handleData(data) {
expect(data).toBe(/*some JSON data*/);
done();
}
getData(handleData);
}
"devDependencies": {
"jest": "^24.9.0",
"jest-editor-support": "^25.0.1"
}
"jest": {
"verbose": true,
"setupFiles": [
"./source/setup-jest.js"
],
},
"scripts": {
"test": "jest --detectOpenHandles"
}