jeudi 19 février 2015

Producing an error in async.each

I have the following JavaScript:



var async = require('async');

var MyOutputModel = function(persistenceModel, callback) {
async.each(persistenceModel.helpOffers, function(helpOffer, asyncCallback) {
console.log('Original source (loop)');
//Do something ...
asyncCallback();
}, function(err) {
console.log('Original source (done)');
console.log(err);
if(err) return callback(err);
return callback(null, _this);
});
};


I would like to test the path containing if(err) return callback(err);...


For doing so I see the only possibility in dependency injection with rewire (http://ift.tt/1EW8M4C).


In my unit test:



var AsyncMock = function() {};
AsyncMock.prototype.each = function(array, successCallback, errorCallback) {
console.log('Inside mock!');
callback(new Error());
};
var asyncMock = new AsyncMock();

MyOutputModel.__set__('async', asyncMock); //Rewire for require-dependency-injection

//Act
new CdObjectOutputModel(cdObjectPersistenceModel, function(err, cdObjectOutputModel) {

//Assert
assert(err);
});


However the "mock" doesn't seem to be used. In my unit test I never see 'Inside mock!' but 'Original source (loop)' and 'Original source (done)' on the console. And there is no error.


Anything I do wrong? I've already used rewire for a similar use case and it worked perfectly. Or is there another approach?


Aucun commentaire:

Enregistrer un commentaire