开玩笑的AJAX单元测试不返回数据

时间:2019-09-10 18:15:16

标签: javascript jquery ajax jestjs

我正在尝试使用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以上,但这似乎没有帮助

0 个答案:

没有答案