我正在使用 Mocha
,
这是我的代码的结构 -
var async = require('async');
const uploadHandler = (req, res) => {
async.waterfall([
function testdata(callback){
fetchdetails(callback, req, res);
},
function resignDocs(callback) {
//do something
console.log(req.body.name);
}
]);
};
app.post('/uploadfile', uploadHandler);
exports.server = app.listen(config.port, () => {
console.log('info', `Listening for incoming connections on port ${config.port}...`);
});
我试图为功能testdata
和功能resignDocs
,
我使用 -
获得了文件var app = require('../app')
(app.js是上述代码的文件名)
现在app.fetchdetails
如果导出,我不允许我访问该功能。并且它也需要req
和res
也需要uploadHandler
。
如何编写waterfall
中功能的单元测试。
您可以在uploadHandler
之前定义您的功能,然后以后将其导出。通过这样做,您可以在测试中获得对resignDocs
,uploadHandler
甚至uploadHandler
的完全控制。
var async = require('async');
function testdata(callback) {
fetchdetails(callback, req, res);
}
function resignDocs(callback) {
//do something
console.log(req.body.name);
}
const uploadHandler = (req, res) => {
async.waterfall([
testdata,
resignDocs
]);
};
app.post('/uploadfile', uploadHandler);
exports.server = app.listen(config.port, () => {
console.log('info', `Listening for incoming connections on port ${config.port}...`);
});
exports.testdata = testdata;
exports.resignDocs = resignDocs;
exports.uploadHandler = uploadHandler;
导出了这样的功能后,例如,您可以利用Sinon-Express Mock来模拟REQ和RES对象。