mawk

Dependency injection and mocking for Node.js

Usage no npm install needed!

<script type="module">
  import mawk from 'https://cdn.skypack.dev/mawk';
</script>

README

mawk

npm package build code climate coverage issues dependencies devDependencies downloads

Table of Contents

# mawk.args(fn) - returns argument names for a function.
# mawk.as(name, value) - create a mock from a value.
# mawk.factory(name, fn) - create a mock from a factory function.
# mawk.require(name) - create a mock from a module.
# mawk.resolve(name) - returns the value of a mock.
# mawk.sanitize(name) - returns a safe mock name.

mawk.args(fn)

stability

Returns the argument names for the function fn as an array of strings.

var mock = require('mawk');

function sum(one, two) {
  return one + two;
}

mock.args(sum);
// => [ 'one', 'two' ]

mawk.as(name, value)

stability

Creates a mock with specified name that resolves to the specified value.

var mock = require('mawk');

// pass name and value together
mock.as('one', 1);

// or pass name then value
mock('one').as(1);

mock.resolve('one');
// => 1

mawk.factory(name, fn)

stability

Creates a mock with specified name that resolves to the value returned from the function fn.

var mock = require('mawk');

mock('one').as(1);
mock('two').as(2);

function three(one, two) {
  return one + two;
}

// pass name and function together
mock.factory('three', three);

// or pass name then function
mock('three').factory(three);

mock.resolve('three');
// => 3

mawk.require(name)

stability

Creates a mock from the module with specified name.

var mock = require('mawk');

// in production
mock.require('redis');

mock.resolve('redis');
// => require('redis')

// in development
mock('redis').require('fakeredis');

mock.resolve('redis');
// => require('fakeredis')

mawk.resolve(name)

stability

Returns the value of the mock with the specified name.

var mock = require('mawk');

mock('one').as(1);
mock('two').as(2);

mock.resolve('one');
// => 1

mock.resolve('two');
// => 2

mawk.sanitize(name)

stability

Returns a sanitized version of name suitable for use as a JavaScript function argument.

var mock = require('mawk');

mock.sanitize('express');
// => 'express'

mock.sanitize('!safe');
// => 'safe'

mock.sanitize('body-parser');
// => 'bodyParser'

mock.sanitize('@bakerface/mawkjs');
// => 'mawkjs'

mock.sanitize('/path/to/file.js');
// => 'file'