Git Product home page Git Product logo

smuggler's Introduction

@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

smuggler's People

Contributors

fthouraud avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

tienduy-nguyen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.