UNPKG

http-request-mock

Version:

Intercept & mock http requests issued by XMLHttpRequest, fetch, nodejs https/http module, axios, jquery, superagent, ky, node-fetch, request, got or any other request libraries by intercepting XMLHttpRequest, fetch and nodejs native requests in low level.

76 lines (75 loc) 2.29 kB
import MockItem from '../mocker/mock-item'; import Mocker from '../mocker/mocker'; import { RequestInfo } from '../types'; import Base from './base'; export default class FetchInterceptor extends Base { private static instance; private fetch; constructor(mocker: Mocker, proxyServer?: string); /** * https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch * Intercept fetch object. */ private intercept; private setTimeoutForSingal; /** * Set request headers for requests marked by remote config. * @param {AnyObject} fetchParams */ private setRemoteRequestHeaders; /** * Set remote result. * @param {FetchResponse} fetchResponse * @param {MockItem} mockItem * @param {RequestInfo} requestInfo * @param {Function} resolve */ private sendRemoteResult; /** * Get original response * @param {string} requestUrl * @param {FetchRequest | AnyObject} params */ private getOriginalResponse; /** * Make mock request. * @param {MockItem} mockItem * @param {RequestInfo} requestInfo * @param {Function} resolve */ private doMockRequest; /** * Make mock request. * @param {MockItem} mockItem * @param {RequestInfo} requestInfo * @param {Function} resolve */ private doMockResponse; /** * https://developer.mozilla.org/en-US/docs/Web/API/Response * Format mock data. * @param {unknown} responseBody * @param {MockItem} mockItem * @param {RequestInfo} requestInfo */ getFetchResponse(responseBody: unknown, mockItem: MockItem, requestInfo: RequestInfo): Response | { body: unknown; bodyUsed: boolean; headers: Headers | [string, string][]; ok: boolean; redirected: boolean; status: number; statusText: string; url: string; type: string; json: () => Promise<any>; arrayBuffer: () => Promise<unknown>; blob: () => Promise<null> | Promise<Blob>; bytes: () => Promise<unknown>; formData: () => Promise<FormData | null>; text: () => Promise<string>; clone: () => any; error: () => any; redirect: () => any; }; }