Javascript 模拟Sinon中的Node.js模块仍然调用实际模块

Javascript 模拟Sinon中的Node.js模块仍然调用实际模块,javascript,node.js,unit-testing,testing,Javascript,Node.js,Unit Testing,Testing,我开始为我正在编写的node.js服务器编写测试。我正在测试这个函数 exports.get_device_states = function (body, master_callback) { var state = new State(body[State.id_key]); console.log("STATE: "); console.log(state); mysqlDao.get_device_states_for_group(state, func

我开始为我正在编写的node.js服务器编写测试。我正在测试这个函数

exports.get_device_states = function (body, master_callback) {
    var state = new State(body[State.id_key]);
    console.log("STATE: ");
    console.log(state);

    mysqlDao.get_device_states_for_group(state, function(err, result) {
        var resp_json = {
            'error': err,
            'stateList': result
        }

        master_callback(resp_json);
    });
}
我需要模拟我用来读/写数据库的“mysqlDao”模块。但我无法做到这一点。每当我尝试的时候。我仍然得到了实际的数据库结果

messagesTest.js

var sandbox = sinon.sandbox.create();
var stubbedDao = {
    get_device_states_for_group: sandbox.stub().returns("STUBBED")
}

但不是像我希望的那样返回“存根”。它只返回数据库结果。对于读取函数来说这不是一个大问题,但我需要它来工作,这样我就不会在其他测试中修改db

谢谢,
A.L

你能在你的服务器代码中发布你如何要求和实例化
mysqlDao
吗?你能在你的服务器代码中发布你如何要求和实例化
mysqlDao
吗?
describe('messages', function() {

    before(function() {
        mockery.enable();
    });

    beforeEach(function() {
        mockery.registerAllowable('async');
        mockery.registerAllowable('../models/State');
        mockery.registerAllowable('../models/Message');
        mockery.registerMock('../dao/gcmdao', stubbedDao);

        messages = require('../business/messages.js');
    });

    afterEach(function() {
        sandbox.verifyAndRestore();
       mockery.deregisterAll(); 
    });

    after(function() {
        mockery.disable();
    });


    describe('get_device_state', function () {
        it('isNormal', function () {
            var body = {
                "STATE_ID": testData.state_one
            }

            stubbedDao.get_device_states_for_group.yields();

            messages.get_device_states(body, function(resp) {
                console.log("returns");
                assert(stubbedDao.get_device_states_for_group.calledOnce);
                console.log(resp);
            })

        });
    });
});