嗨,我想模拟Http Request函数中的响应。我在网上找不到任何东西,说明我们如何模拟回调并将其传递给函数。
文件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的简单模拟为jest.fn)保存在应用程序根目录的 mock 文件夹中。
这里我要模拟响应回调函数,该函数将作为参数传递。
答案 0 :(得分:0)
尽管我没有得到上述问题的答案,但有关如何在Http Request函数中模拟模拟回调的信息。但是,我找到了一种使用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模拟请求并提供所需的状态代码。