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
TypeScript
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;
};
}