This library aims to provide a simple way to handle HTTP mock declarations through Nock.
It has been thought as a simple component to load mock definitions from a directory. Then, the mocks could get activated on demand.
For instance, an express/koa middle could look for a x-mock-id
header and when found load the mock associated with this id.
For now, only js
files could get imported, but we'll improve that in the future!
const nock = require('nock')
module.exports = {
id: 'mock-id',
groupId: 'optional-mock-id',
declareMock: () => {
nock('http://foo.bar').get('/').reply(200)
}
}
In order to initialize the MockManager
(we'll talk about it right after), you just need to call the initialize
method like so:
const { initialize } = require('@ekino/smuggler')
var mockManager = initialize()
By default, this function will look for a __mocks__
directory in the current directory and load any js
file.
If you want to modify that, just pass in custom options:
const { initialize } = require('@ekino/smuggler')
var mockManager = initialize({
baseDirectory: '/absolute/path',
mocksDirectory: 'mocks-directory-name',
extensions: ['js']
})
It's the only component you should worry about as it's the one which will allow you to interact with the loaded definitions.
It looks for a mock with the given id
and loads it if it has been found.
mockManager.activateMock('mock-id')
It looks for every mock with the given group-id
and loads them all.
mockManager.activateMocksGroup('group-id')
It lists all active mocks known to nock
as a string array (see nock.activeMocks()).
mockManager.listActiveMocks()
It lists all pending mocks known to nock
as a string array (see nock.pendingMocks()).
mockManager.listPendingMocks()
It looks at nock pending mocks and if there's at least one it throws an error.
mockManager.checkNoPendingMocks()
It will clean nock from any mocks (see nock.cleanAll() and nock.restore()).
mockManager.resetMocks()
You can find examples of usage in the examples
directory.