Mocking HTTP errors and network conditions for testing purposes.
- Mock server errors (e.g., 500 Internal Server Error)
- Mock network errors (e.g., network disconnects)
- Mock timeouts
- Configure delays to mimic latency
- Works in both browser and Node.js environments
- TypeScript support
npm install http-error-mocker
import { HttpErrorMocker } from 'http-error-mocker';
const mocker = new HttpErrorMocker();
// Mock a server error for specific endpoints
mocker.mock((url) => url.includes('/api/error'), {
errorType: 'server-error',
statusCode: 500,
});
// Start intercepting fetch calls
mocker.start();
// Your code that makes fetch calls
fetch('/api/error')
.then((response) => {
console.log(response.status); // 500
})
.catch((error) => {
console.error(error);
});
// Stop intercepting when done
mocker.stop();
mocker.mock((url) => url.includes('/api/error'), {
errorType: 'network-error',
});
mocker.mock((url) => url.includes('/api/error'), { errorType: 'timeout' });
mocker.mock((url) => url.includes('/api/error'), { delay: 3000 });
mocker.mock((url) => url.includes('/api/error'), { errorType: 'random' });
mocker.mock(condition: ErrorCondition, options: MockerOptions): void;
Defines a condition under which to mock an error.
- condition: A function that receives the URL and options of the fetch call and returns a boolean indicating whether to mock the error.
- options: Configuration for the type of error to mock.
mocker.start(): void;
Starts intercepting fetch calls.
mocker.stop(): void;
Stops intercepting fetch calls.
mocker.reset(): void;
Resets the mocker to its initial state.
- errorType: 'timeout' | 'server-error' | 'network-error'
- statusCode: number
- statusText: string
- delay: number
If your environment doesn't support globalThis, the package includes a polyfill. Ensure it's imported before other code.
Contributions are welcome! Please feel free to submit a Pull Request or open an issue.
- Fork the repository
- Create a new branch (
git checkout -b feature-branch
) - Commit your changes (
git commit -am 'Add new feature'
) - Push to the branch (
git push origin feature-branch
) - Open a Pull Request
If you like this project, please give it a ⭐ on GitHub! You can also follow me for more projects.
This project is licensed under the MIT License - see the LICENSE file for details.
Thanks to the developers of TypeScript, Jest, and Husky.
For any inquiries or feedback, please contact Alperen Talaslıoğlu.