我有一个带有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对象。两者都得到同样的错误。