let mockDelay = 10; let mockError; let mockResponse: any = { status: () => { return 200; }, ok: true, get: jest.fn(), toError: jest.fn(), }; const Request = { text: JSON.stringify(mockResponse), body: mockResponse, post: jest.fn().mockReturnThis(), get: jest.fn().mockReturnThis(), send: jest.fn().mockReturnThis(), query: jest.fn().mockReturnThis(), field: jest.fn().mockReturnThis(), type: jest.fn().mockReturnThis(), set: jest.fn().mockReturnThis(), accept: jest.fn().mockReturnThis(), timeout: jest.fn().mockReturnThis(), proxy: jest.fn().mockReturnThis(), buffer: jest.fn().mockImplementation(() => { return { parse: jest.fn(), }; }), then: jest.fn().mockImplementation((callback) => { return new Promise((resolve, reject) => { if (mockError) { return reject(mockError); } return resolve(callback(mockResponse)); }); }), end: jest.fn().mockImplementation((callback) => { if (mockDelay) { setTimeout(callback, 0, mockError, mockResponse); return; } callback(mockError, mockResponse); }), __setMockDelay: (boolValue) => { mockDelay = boolValue; }, __setMockResponse: (mockRes) => { mockResponse = mockRes; }, __setMockError: (mockErr) => { mockError = mockErr; }, __setMockResponseBody: (body) => { mockResponse.body = body; }, }; export default Request;