javascript - how to mock object created via require -
i'm new node.js , in code i've seen don't see ioc/di style constructor injection of dependencies.
instead, typically node.js extension require() used create local vars allowing access external modules' exports.
but when writing unit-tests ( isolate single layer/function ), how mock modules accessed via vars created require ?
/helpers/datahelper.js var datamodel = require('../models/datamodel.js'); var getformatteddataforregion = function(region, callback) { var data = {}; // validate region // query datamodel // async.map format data items // callback(data); } /tests/datahelpertests.js describe('datahelper', function(){ it('getformatteddataforregion returns expected response', function(done){ var expecteddata = {}; // populate expecteddata // **** need way mock datamodel ***** datahelper.getformatteddataforregion("west", function(data){ expect(data).to.eql(expecteddata); done(); }); });
this done proxyquire.
i don't technique, it's best way i've found respect "node way" , still able test easily. you'd do:
var proxyquire = require('proxyquire'), datamodelmock = require('./mocks/datamodel'); proxyquire('path/to/helpers/datahelper.js', { '../models/datamodel.js': datamodelmock });
Comments
Post a Comment