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.
115 lines (114 loc) • 4.19 kB
TypeScript
import Mocker from '../mocker/mocker';
import Base from './base';
export default class XMLHttpRequestInterceptor extends Base {
private static instance;
private xhr;
constructor(mocker: Mocker, proxyServer?: string);
/**
* https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest
* Logic of intercepting XMLHttpRequest object.
*/
private intercept;
/**
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open
* Logic of intercepting XMLHttpRequest.open method.
*/
private interceptOpen;
/**
* Logic of intercepting XMLHttpRequest.send method.
*/
private interceptSend;
/**
* Set remote result.
* @param {XMLHttpRequestInstance} xhr
* @param {Record<string, string>} remoteInfo
*/
private sendRemoteResult;
/**
* Get original response
* @param {XMLHttpRequestInstance} xhr
*/
private getOriginalResponse;
/**
* Make mock request.
* @param {XMLHttpRequestInstance} xhr
* @param {RemoteResponse | null} remoteResponse
*/
private doMockRequest;
private setTimeoutTimer;
/**
* Make mock response.
* @param {XMLHttpRequestInstance} xhr
* @param {RemoteResponse | null} remoteResponse
*/
private doMockResponse;
/**
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#event_handlers
* Call some necessary callbacks if specified. Trigger some necessary events.
* 'onreadystatechange' as a property of the XMLHttpRequest instance is supported in all browsers.
* Since then, a number of additional on* event handler properties have been implemented in various
* browsers (onload, onerror, onprogress, etc.). See Using XMLHttpRequest. More recent browsers,
* including Firefox, also support listening to the XMLHttpRequest events via standard addEventListener() APIs
* in addition to setting on* properties to a handler function.
* @param {XMLHttpRequest} xhr
*/
private sendResult;
private event;
private progressEvent;
/**
* https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/getAllResponseHeaders
* Logic of intercepting XMLHttpRequest.getAllResponseHeaders method.
*/
private interceptGetAllResponseHeaders;
/**
* https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/getResponseHeader
* Logic of intercepting XMLHttpRequest.getResponseHeader method.
*/
private interceptGetResponseHeader;
/**
* Logic of intercepting XMLHttpRequest.interceptSetRequestHeader method.
*/
private interceptSetRequestHeader;
/**
* Get getter function by key.
* @param {string} key
*/
private getGetter;
/**
* Logic of intercepting XMLHttpRequest.readyState getter.
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
*/
private interceptReadyState;
/**
* Logic of intercepting XMLHttpRequest.status getter.
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status
*/
private interceptStatus;
/**
* Logic of intercepting XMLHttpRequest.statusText getter.
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/statusText
*/
private interceptStatusText;
/**
* Logic of intercepting XMLHttpRequest.responseText getter.
*/
private interceptResponseText;
/**
* Logic of intercepting XMLHttpRequest.response getter.
*
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType
* When setting responseType to a particular value, the author should make
* sure that the server is actually sending a response compatible with that
* format. If the server returns data that is not compatible with the
* responseType that was set, the value of response will be null.
*/
private interceptResponse;
/**
* Logic of intercepting XMLHttpRequest.responseURL getter.
*/
private interceptResponseURL;
/**
* Logic of intercepting XMLHttpRequest.responseXML getter.
*/
private interceptResponseXML;
}