我正在使用 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
如果我导出它,则不允许我访问该函数。它还需要来自 uploadHandler
的 req
和 res
。
如何为 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 对象。
关于javascript - 如何为 Async.waterfall 数组 Node.js 中的函数编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47834848/