https://github.com/rmariuzzo/fixture-middleware
Use fixture data in your express app!
https://github.com/rmariuzzo/fixture-middleware
Last synced: over 1 year ago
JSON representation
Use fixture data in your express app!
- Host: GitHub
- URL: https://github.com/rmariuzzo/fixture-middleware
- Owner: rmariuzzo
- License: mit
- Created: 2017-11-23T17:48:04.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-12-12T14:36:05.000Z (over 8 years ago)
- Last Synced: 2025-03-16T03:23:01.491Z (over 1 year ago)
- Language: JavaScript
- Size: 34.2 KB
- Stars: 2
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

## Motivation
Sometimes I want to mock certain paths of my API made with [Express](http://expressjs.com/). Therefore, I created **fixture-middleware** which will use fixture data (mock) for any URL that matches a file inside the configured fixture directory.
## Installation
```shell
npm install fixture-middleware --save-dev
```
```shell
yarn add fixture-middleware --dev
```
## Usage
```js
const path = require('path')
const express = require('express')
const fixtureMiddleware = require('fixture-middleware')
const app = express()
const fixtureDirectory = path.resolve(__dirname, './fixtures')
app.use(fixtureMiddleware(fixtureDirectory))
```
### Matching URLs with fixture files
All URLs are normalized (all `/` will be replaced by `--`) and if a `Accept` headers is present it will be used to determine the file extension, otherwise the first matching file will be returned.
#### Example
Suppose we have the following files in the configured fixture directory:
```
`-- fixtures
|-- users.json
|-- users.html
`-- users--active.json
```
The following request will match those files as follows
| Request | Response
| --- | ---
| **URL:** `/users`
**Headers:** (no accept header) | **File:** `users.html`
| **URL:** `/users`
**Headers:** `accept=application.json` | **File:** `users.json`
| **URL:** `/users`
**Headers:** `accept=application.html` | **File:** `users.html`
| **URL:** `/users/active`
**Headers:** (no accept header) | **File:** `users--active.json`
| **URL:** `/users/active`
**Headers:** `accept=application.json` | **File:** `users--active.json`
**Important:** Any unmatched request will be delegated to the next middleware.
## Development
1. Clone and fork this repo.
2. Install dependencies: yarn or npm install.
3. [Run tests](#test).
4. Prepare a pull request.
### Test
- `yarn test` – to run all tests.
- `yarn test -- --watch` – to run all tests in watch mode.
### Publish
1. Bump package version: `yarn version --new-version x.x.x -m 'Version %s.'`.
2. Publish to NPM registry: `npm publish`.
3. Push new tag: `git push origin --tags`.
---
Made with :heart: by [Rubens Mariuzzo](https://github.com/rmariuzzo).
[MIT license](LICENSE)