1.0.0 • Published 3 years ago

@ekino/smuggler v1.0.0

Weekly downloads
37
License
MIT
Repository
github
Last release
3 years ago

@ekino/smuggler

GitHub Workflow Status Coveralls github branch code style: prettier npm (scoped)

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.

Mock definitions

For now, only js files could get imported, but we'll improve that in the future!

JavaScript

const nock = require('nock')

module.exports = {
    id: 'mock-id',
    groupId: 'optional-mock-id',
    declareMock: () => {
        nock('http://foo.bar').get('/').reply(200)
    }
}

Initializing

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']
})

The MockManager

It's the only component you should worry about as it's the one which will allow you to interact with the loaded definitions.

MockManager#activateMock

It looks for a mock with the given id and loads it if it has been found.

mockManager.activateMock('mock-id')

MockManager#activateMocksGroup

It looks for every mock with the given group-id and loads them all.

mockManager.activateMocksGroup('group-id')

MockManager#listActiveMocks

It lists all active mocks known to nock as a string array (see nock.activeMocks()).

mockManager.listActiveMocks()

MockManager#listPendingMocks

It lists all pending mocks known to nock as a string array (see nock.pendingMocks()).

mockManager.listPendingMocks()

MockManager#checkNoPendingMocks

It looks at nock pending mocks and if there's at least one it throws an error.

mockManager.checkNoPendingMocks()

MockManager#resetMocks

It will clean nock from any mocks (see nock.cleanAll() and nock.restore()).

mockManager.resetMocks()

Examples

You can find examples of usage in the examples directory.

Express

Express example