https://github.com/unboundedsystems/mocha-nock
Easy recording and playback of HTTP(S) for Mocha.js using Nock.
https://github.com/unboundedsystems/mocha-nock
http https javascript mocha mochajs mock mocks nock nodejs testing
Last synced: 3 months ago
JSON representation
Easy recording and playback of HTTP(S) for Mocha.js using Nock.
- Host: GitHub
- URL: https://github.com/unboundedsystems/mocha-nock
- Owner: unboundedsystems
- Fork: true (poetic-labs/nock-vcr-recorder-mocha)
- Created: 2018-12-18T05:17:04.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-14T08:17:26.000Z (over 1 year ago)
- Last Synced: 2024-05-14T09:34:15.720Z (over 1 year ago)
- Topics: http, https, javascript, mocha, mochajs, mock, mocks, nock, nodejs, testing
- Language: JavaScript
- Homepage:
- Size: 240 KB
- Stars: 3
- Watchers: 3
- Forks: 3
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

[](https://travis-ci.com/unboundedsystems/mocha-nock)

# Mocha Nock
A library that makes saving fixtures with
[nock](https://github.com/pgte/nock) and
[mocha](http://mochajs.org/) easy. Just
use `describeFixture` instead of `describe` and it will record outbound requests
using nock into `test/fixtures` and read from them the next time you run the
tests.
## Install
```bash
npm install --save-dev mocha-nock
```
## Usage
Use `describeFixture` instead of `describe` and it will use nock to record all
requests.
The first time this test executes, it will save the HTTP request & response into your `test/fixtures` directory.
Then on subsequent tests, it will return the saved data and not use the network.
```js
const describeFixture = require('mocha-nock');
const request = require('request-promise-native');
describeFixture('normal test', () => {
it('works', async () => {
const response = await request('http://localhost:4000/users');
});
describe('some other test', () => {
// You can use mocha how you normally would to group tests
});
});
```
It also supports `.skip` and `.only`, like mocha does.
```js
describeFixture.skip('skipped test', () => {
// Anything in here will be skipped
});
describeFixture.only('only test', () => {
// This will be the only test run
});
```
### Usage with test specific options
```js
// This test will not record the request to localhost:4000.
// For anything it does record, it will also record the reqheaders.
const opts = {
excludeScope: 'localhost:4000',
recorder: {
enable_reqheaders_recording: true
}
};
describeFixture('normal test', opts, () => {
it('works', async () => {
const resp1 = await request('http://localhost:4000/users');
const resp2 = await request('https://google.com/');
});
});
```
## Configuration
Defaults:
```js
{
// Don't record any requests to this scope
// It can be an array or string
excludeScope: ['localhost', '127.0.0.1', '0.0.0.0'],
// Re-record and overwrite your current fixtures
overwrite: false,
// Record fixtures when test fails
recordOnFailure: false,
// These options are passed to the nock recorder that runs behind the scenes
// to capture requests
recorder: {
output_objects: true,
dont_print: true
}
}
```
To overide these you can call `describeFixture.setDefaults` with an object to
override them for ALL tests. It must be called before any `describeFixture()` is
called to work properly. The best place is in a test helper file.
You also are able to pass in test specific options as the last parameter to
`describeFixture()`. See the [Usage](#usage) section above for an example.
## Authors
Originally based off of an older version of [nock-vcr-recorder](https://github.com/poetic-labs/nock-vcr-recorder-mocha)
by Jake Craige.
* [Mark Terrel](https://twitter.com/MarkTerrel)
* [Jake Craige](http://twitter.com/jakecraige)
## Legal
© 2018-2019 [Unbounded Systems, LLC](https://unbounded.systems)
© 2014 [Poetic Systems, Inc.](http://poeticsystems.com)
[Licensed under the MIT license](http://www.opensource.org/licenses/mit-license.php)