所以在一个文件中,我定义了这条路线:
router.post('/', security.authenticate, function(req, res, next) {
//Doing prep stuff
//Do database work (<< this is what im really testing for)
//Calling another work function.
createFormUser(req.body, (ret) => {
return res.json(ret.createdUser);
});
});
后跟这个功能:
var createFormUser = (ourUser, call) => {
// does a bunch of misc work and creation for another database
// unrelated to current tests.
}
我想测试这条路线。通常,我只是创建数据库的沙箱实例,以便它可以做任何想做的事情,在测试中对路由发出http请求,最后在http调用的返回中执行expect()。
但是,我不希望调用“createFormUser”函数,因为1)它做了一些花哨的狗屎,这个测试真的很难包含2)我会在其他地方测试它。
在正常的测试中,我会在这一点上使用sinon来保存函数。但在这种情况下,我实际上并没有对象引用,因为这是通过对服务器的HTTP请求完成的,mocha在测试时进行了调整。
所以我的问题与标题相同,如何使用stub / replace / ignore / etc这个方法,以便在测试期间不调用它?
答案 0 :(得分:0)
如@DavidKnipe所述,我所要做的就是通过以下方式导出方法:
module.exports.createFormUser = (ourUser, call) => { ... }
并且能够单独测试该方法并通过sinon.stub阻止它的执行。