0.6.1 • Published 6 years ago

require-proxy-mock v0.6.1

Weekly downloads
41
License
-
Repository
github
Last release
6 years ago

require-proxy-mock

Automatically and transparently patches all require calls (Module._load) to return an ES6 Proxy wrapper around the original module's export(s) which can later be mocked/unmocked as required.

Somewhat similar to proxyquire, rewire, and Jest's automock.

Requires Node v6+ (try 10+ if you're getting errors like this)

Install

npm install --save-dev require-proxy-mock

Usage

API

const { mock } = require('require-proxy-mock')
mock(dep, mock)
mock({dep: mock, ...})
mock(Map {dep => mock, ...})
  • dep [string|regex] Require request of the dependency to mock.

  • mock Mock that replaces the required dependency.

Example

Important: Require once before loading any other modules:

mocha --require require-proxy-mock **/*.test.js

Then require it as an object in your test(s) and add/remove properties on it with the same key names as the originally required files you want to mock:

  • main.js - A typical module file; no change required here

    const someLib = require('some-lib')
                             ^^^^^^^^ will be mocked
    module.exports = someLib
    • some-lib.js - Dependency that'll be mocked

      module.exports = () => 'ORIGINAL'
  • main.test.js

    const {mock} = require('require-proxy-mock')
    const main = require('./main')
    
    describe('main', () => {
      let unmock
      before(() => {
        unmock = mock('some-lib', () => 'CHANGED')
                       ^^^^^^^^ mocked
      })
      it('should mock', () => {
        assert(main(), 'CHANGED')
      })
      after(() => {
        unmock()
      })
    })

Limitations

Cannot mock primitives (since they can't be proxied).

0.6.1

6 years ago

0.6.0

6 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago

0.1.1

7 years ago

0.1.0

7 years ago