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

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -