http-error-mocker
v1.0.0
Published
Simulate HTTP errors and network conditions for testing purposes
Downloads
14
Maintainers
Readme
HTTP Error Mocker
Mocking HTTP errors and network conditions for testing purposes.
Features
- 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
Installation
npm install http-error-mocker
Usage
Basic Example
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();
Mock a Network Error
mocker.mock((url) => url.includes('/api/error'), {
errorType: 'network-error',
});
Mock a Timeout
mocker.mock((url) => url.includes('/api/error'), { errorType: 'timeout' });
Mock a Delay
mocker.mock((url) => url.includes('/api/error'), { delay: 3000 });
Mock a Random Error
mocker.mock((url) => url.includes('/api/error'), { errorType: 'random' });
API
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.
Mocker Options
- errorType: 'timeout' | 'server-error' | 'network-error'
- statusCode: number
- statusText: string
- delay: number
Polyfill for globalThis
If your environment doesn't support globalThis, the package includes a polyfill. Ensure it's imported before other code.
Contributing
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
🌟 Support
If you like this project, please give it a ⭐ on GitHub! You can also follow me for more projects.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgements
Thanks to the developers of TypeScript, Jest, and Husky.
Contact
For any inquiries or feedback, please contact Alperen Talaslıoğlu.