Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/manosim/mocr
A mock http server to be used where you can't mock http requests
https://github.com/manosim/mocr
http mock node server
Last synced: about 20 hours ago
JSON representation
A mock http server to be used where you can't mock http requests
- Host: GitHub
- URL: https://github.com/manosim/mocr
- Owner: manosim
- License: mit
- Created: 2020-10-23T23:53:58.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-01-11T09:27:13.000Z (almost 3 years ago)
- Last Synced: 2024-04-13T03:21:42.058Z (7 months ago)
- Topics: http, mock, node, server
- Language: TypeScript
- Homepage:
- Size: 140 KB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# mocr [![npm][npm-image]][npm-url] [![github-ci][github-ci-image]][github-ci-url]
> A mock http server used in tests
## Features
- Easy to use, mock http server
- Spy/track requests received by the server
- Designed to work with end-to-end & unit tests
- Strongly typed, types included
- Zero dependencies## Installation
```
yarn add -D mocr
# or
npm install --save-dev mocr
```## Configuration
All config options mentioned below are **_optional_**.
| Name | Default | Description |
| ----- | ------- | ------------------------------------------ |
| debug | false | When set to true, logging will be enabled. |
| port | 9091 | The port that the server will be running. |## Usage
```js
import mocr, { createRequestSpy } from 'mocr';describe('my tests', () => {
const mockServer = mocr({
/* Configuration */
});beforeAll(async () => {
// Start the server
await mockServer.start();
});beforeEach(async () => {
// Reset the request spy
mockServer.requestSpy.reset();
});afterAll(async () => {
// Stop the server
await mockServer.stop();
});it('should make a call to the backend when pressing the button', () => {
// Press the buttonconst { request, body } = requestSpy.calls[0];
expect(mockServer.requestSpy).toHaveBeenCalledTimes(1);
expect(request.method).toBe(/* Expected Method, ie. POST, PUT */);
expect(body).toHaveBeenCalledWith(/* Expected Request Body */);
});
});
```## Methods
### mocr
```js
const mockServer = mocr(/* Optional Config */);await mockServer.start();
// Run your test case
await mockServer.stop();
```Used to create an instance of _mocr_ - it accepts _optional_ configuration. You can have as many _mocr_ servers running in parallel as long as they run on a [different port](#configuration). See [example](#usage) for a complete example.
### start()
```js
const mockServer = mocr(/* Optional Config */);await mockServer.start();
```Starts the http server.
### stop()
```js
const mockServer = mocr(/* Optional Config */);await mockServer.stop();
```Stops the server of the `mocr` instance.
### mockNextResponse({ data })
```js
const { start, stop, mockNextResponse } = mocr(/* Optional Config */);mockNextResponse({ foo: 'bar' });
```Used to return a mock/stubbed response from the server. Will only use that response once and will then fall back to the default `Hello World` server response. For mocking multiple requests, see [mockNextResponses](#mockNextResponses) below.
### mockNextResponses([ { data } ])
```js
const { start, stop, mockNextResponses } = mocr(/* Optional Config */);mockNextResponses([{ id: '123' }, { id: '456' }]);
```Similar to `mockNextResponse` but expects an array of data. The data will be return for each response in the order they appear in the array.
## Properties
### requestSpy
```js
const { start, stop, requestSpy } = mocr(/* Optional Config */);expect(requestSpy.calls).toHaveLength(1);
```Holds a records/tracks all _incoming_ requests to the mock server along with their body/data(if any). To be used for validating requests/content leaving your application. Below you can find all available methods for a RequestSpy. See [example](#usage) above.
| Name | Description |
| ----- | ----------------------------------------------------------------------------- |
| calls | An array of all the calls. `[ {request: IncomingMessage. body: string {} } ]` |
| reset | Empties the `calls` array. |## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details
[github-ci-image]: https://github.com/manosim/mocr/workflows/Run%20Tests/badge.svg
[github-ci-url]: https://github.com/manosim/mocr/actions
[npm-image]: https://badge.fury.io/js/mocr.svg
[npm-url]: https://www.npmjs.com/package/mocr