Node.js 使用nodejs、mocha、chai和sinon,我想存根一个在路由中调用的函数
我有一个非常简单的应用程序,就是nodejs、express和mysql 我是单元测试新手,我认为这个应用程序是做得更好的好方法。 我试图完成的(我认为sinon就是答案)是模拟或存根mysql.insertEventToDB和rabbit.addToRabbitMQ 在我的应用程序中,我有Node.js 使用nodejs、mocha、chai和sinon,我想存根一个在路由中调用的函数,node.js,mocha.js,sinon,chai,Node.js,Mocha.js,Sinon,Chai,我有一个非常简单的应用程序,就是nodejs、express和mysql 我是单元测试新手,我认为这个应用程序是做得更好的好方法。 我试图完成的(我认为sinon就是答案)是模拟或存根mysql.insertEventToDB和rabbit.addToRabbitMQ 在我的应用程序中,我有 app.use('/sendgrid', sendgrid(pool, config, logger) ); 在我的sendgrid.js中 var express = require('express'
app.use('/sendgrid', sendgrid(pool, config, logger) );
在我的sendgrid.js中
var express = require('express');
var mysql = require('../app/utils/mysql');
var rabbit = require('../app/utils/rabbitMQ');
module.exports = function (dbpool, config, logger) {
var router = express.Router();
router.post('/callback', function (req, res) {
for (var x=0 ; x < req.body.length ; x++ ){
mysql.insertEventIntoDB(dbpool, req.body[x], logger);
rabbit.addToRabbitMQ(config,req.body[x], logger)
}
res.json({ status: 'OK' });
});
return router;
}
感谢您的帮助/指导请尝试使用
要伪造mysql.insertEventToDB
var fakeInsertEvt = sinon.stub(mysql, 'insertEventIntoDB');
然后,为了定义调用此伪函数时的行为,onCall
的参数是调用此函数的编号
fakeInsertEvt.onCall(0).return(0);
或者根据
var stub=sinon.stub(对象,“方法”,func)代码>,用一个回调函数伪造上述函数
var fakeInsertEvt = sinon.stub(mysql, 'insertEventIntoDB', function(){
return Math.random();
});
在您的例子中,第二个选项似乎更好,因为在mysql.insertEventToDB
中有for
循环
fakeInsertEvt.onCall(0).return(0);
var fakeInsertEvt = sinon.stub(mysql, 'insertEventIntoDB', function(){
return Math.random();
});