Subscribe to PHP Freaks RSS

Node.js: How to mock the imports of an ES6 module

syndicated from planet-php.net on July 18, 2017

The package mock-require is useful if you want to mock require statements in Node.js. It has a simple API that allows you to mock anything, from a single exported function to a standard library. Here’s an example:

app/config.js

function init() {
    // ...
}

module.exports = init;

app/services/content.js

import config from '../../config.js';

function load() { // ... }

module.exports = load;

test/services/content_spec.js

import {assert} from 'chai';
import sinon from 'sinon';
import mockRequire from 'mock-require';

describe('My module', () => {

let module; // module under test let configMock;

beforeEach(() => { configMock = { init: sinon.stub().returns("foo") };

// mock es6 import (tip: use the same import path) mockRequire("../../config.js", configMock);

// require es6 module module = require("../../../app/services/content.js"); });

afterEach(() => { // remove all registered mocks mockRequire.stopAll(); });

describe('Initialisation', () => {

it('should have an load function', () => { assert.isFunction(module.load); });

});

});

Filed under: Node.js, Programming