为什么在单元测试期间不执行此回调?

时间:2015-06-21 21:25:58

标签: javascript node.js unit-testing asynchronous jasmine

我有一个带有addItem函数的简单数据库对象:

exports.addItem = function(item, callback){

    var callbackFunc = callback || function(){};

    list.push(item);

    callbackFunc(item);
};

一个叫它的控制器:

exports.addItem = function(req, res){
    res.setHeader('Content-Type', 'application/json');

    db.addItem(req.body,function(item){
        res.send(item);
    });
};

最后进行单元测试:

var item =require('path/to/item/controller');
var mockReq = {
    body: itemObj
};

var mockRes = {
    setHeader : function(){},
    send : function(item){}
};

describe('list item', function(){

     it('should respond with item added', function(done){
            spyOn(mockRes, 'send');

            item.addItem(mockReq, mockRes);

            expect(mockRes.send).toHaveBeenCalledWith(itemObj);
        });
});

每次运行测试时都会出现以下错误:

 Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL

我已尝试使用真正的db对象,并注入一个仅使用该项调用回调函数的模拟db对象。两者都得到同样的错误。

0 个答案:

没有答案