使用jest模拟NodeHttpRequest的回调响应函数



嗨,我想模拟Http请求函数中的响应。我在网上找不到任何东西,说明了我们如何模拟回调并将其传递给函数。

文件1:HTTPfile.ts

import https from 'https';
const putSampleDataAsync = (): Promise<string> => {
var options = {
host: 'sample.com',
path: '/upload',
method: 'PUT',
};
const body = [];
return new Promise(function (resolve, reject) {
var req = https.request(options, function (res) {
res.on('data', function (chunk) {
body.push(chunk);
});
res.on('end', function (chunk) {
body.push(chunk);
resolve(res.statusCode.toString());
});
});
req.on('error', function (error) {
reject(error);
});
req.write('some sample data in stringify Json format');
req.end();
});
};

文件2:HTTPfile.test.ts

import putSampleDataAsync from 'HTTPfile';
import https from 'https';
jest.mock('https');
describe('Mocking HTTP Calls Test', () => {
test('Success - ', () => {
(https.request as jest.Mock).mockImplementation((options, response) => {
console.log('How to mock ..!' + response);
return {
on: jest.fn(),
write: jest.fn(),
end: jest.fn(),
};
});
});
});

我将http.ts(http.request的一个简单mock作为jest.fn(保存在应用程序根目录下的mock文件夹中。

在这里,我想模拟作为参数传递的响应回调函数。

虽然我没有得到上面问题的答案,关于如何模拟HttpRequest函数中的mock回调。然而,我找到了一种使用Nock测试这些类型请求的方法。我只是发布答案,以防它对任何人都有帮助:

HttpFile.test.ts

import putSampleDataAsync from 'HTTPfile';
import nock from 'nock';
describe('Mocking HTTP Calls Test ', () => {
it(' - Success ', () => {
nock('https://' + 'sample.com')
.put('/upload')
.reply(200, { results: {} });
return putSampleDataAsync()
.then(res => {expect(res).toEqual("200")});
});
it(' - Failed Response ', () => {
nock('https://' + 'sample.com')
.put('/upload')
.reply(400, { results: {} });
return putSampleDataAsync()
.then(res => {expect(res).toEqual("400")});
});
})

上述测试文件将能够使用Nock模拟请求,并提供所需的状态代码。

相关内容

  • 没有找到相关文章

最新更新