test-http-client
v1.0.2
Published
An emulator for an HTTP client designed for testing and experimentation purposes involving asynchronous requests
Downloads
10
Maintainers
Readme
TestHttpClient
TestHttpClient
TestHttpClient
is a utility class that provides an emulator for an HTTP client, primarily designed for writing tests and conducting experiments involving asynchronous requests. It allows users to send requests, track pending requests, and perform various operations on them based on URL, Request objects, or custom match functions.
Features
- Sending HTTP requests asynchronously using Promises.
- Tracking pending requests and managing their resolution or rejection.
- Matching pending requests using URLs, Request objects, or custom functions.
- Resolving or rejecting matched requests individually.
- Removing pending requests individually or in batches based on match criteria.
- Verifying that all pending requests have been resolved or rejected.
- Cleaning the list of pending requests.
Usage
Import the
TestHttpClient
and create an instance:import { TestHttpClient } from './test-http-client'; const httpClient = TestHttpClient.make();
Send requests using the
request<T>(request: Request): Promise<T>
method:it('allows to resolve pending request', async () => { const endpoint = new Request('https://api.example.com/data'); const resolveValue = { data: 3 }; const promise = httpClient.request<typeof resolveValue>(endpoint); httpClient.expectOne<typeof resolveValue>(endpoint).resolve(resolveValue); await expect(promise).resolves.toEqual(resolveValue); });
Perform operations on pending requests:
Match and retrieve a single pending request:
const pendingRequest = httpClient.expectOne<string>((req) => req.url === 'https://api.example.com/data');
Remove a single pending request by matching:
httpClient.removeOne((req) => req.url === 'https://api.example.com/data');
Match and retrieve multiple pending requests:
const pendingRequests = httpClient.expect<string[]>((req) => req.url.includes('api.example.com'));
Remove multiple pending requests by matching:
httpClient.remove((req) => req.url includes('api.example.com'));
Verify the completion of all pending requests:
httpClient.verify();
Clean the list of pending requests:
httpClient.clean();
For more examples, see TestHttpClient.spec.ts.