Mock function return in node.js test

I'm new to testing in node.js and I would like to mock the return of a specific function call in a process that looks like the following.

doSomething(function(err, res){
    callAnotherOne(res, function(err, result){
        getDataFromDB(result, function(err, docs){
            //some logic over the docs here
        })
    })
})

The function that I want to mock is the getDataFromDB() and specifically the documents (using MongoDB) that it returns. How could I do something like this with mocha?

Part of the code, strip from the logic in between, is the following:

filterTweets(item, input, function(err, item) {
    //Some filtering and logging here

    db.getTwitterReplies(item, function(err, result) {
        if(err) {
            return callback('Failed to retrieve tweet replies');
        }

        //Do some work here on the item using the result (tweet replies)

        /***** Here I want to test that the result is the expected ****/

        db.storeTweets(item function (err, result){
            //error checks, logging
            callback();
        });
    });
});

Based on the amount of twitter replies (function call "getTwitterReplies"), I will modify my object accordingly (didn't include that code). I want to see if based on different replies result, my object is constructed as expected.

p.s. I also checked into sinon.js after some searching and I managed to mock the return of a callback (by writing some testing code outside my project) but not the return of a callback of a nested function call.

Here's how I would approach this category of problem:

First create a "config.js" that wraps the dependencies that you'd like to inject. This will become your container.

 var db = {
    doSomeDbWork : function(callback){
      callback("db data");
    }
 };

 module.exports = {
   db: db
 };

From there, you can call config dependencies like so: var config = require('./index/config'); config.db.doSomeDbWork(function(data){ res.render('index', { title: 'Express' , data:data}); });

And in your tests, inject a mock/spy easily:

var config = require('../routes/index/config');
config.db = {
  doSomeDbWork : function(callback){
    callback("fake db data");  
  }
};
var indexRouter = require('../routes/index');
indexRouter.get('/');

Because the require call refers to the same config module exports, the changes made to the config in the spec will be reflected where ever they are imported via require()