node.js - 如何在 NodeJS 中正确编写路由器模块的单元测试
问题描述
我是 nodeJS 和测试的新手,我想知道如何正确测试我的应用程序路由。我已经阅读了一些使用supertest和chai-http调用 POST 方法的文章,但我相信这种方式更像是集成测试而不是单元测试我的应用程序。
我读过关于 Sinon 的文章,但是我很难将它应用到我的代码上,就像我不知道要存根什么,我如何处理来自请求正文的数据,以便我可以覆盖我的条件语句的不同分支。我正在使用nyc监控我的代码覆盖率,因此我的目标也是增加我的单元测试覆盖率。
如果有人可以指导我,我将不胜感激。提前致谢!
服务器.js
const express = require('express');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.listen(8080, function () {
logger.info('App is now running on port 8080');
});
app.use('/', require('./routes/generateURL.js'));
module.exports = app;
生成URL.js
const express = require('express');
const router = express.Router();
router.post('/generate-url', (req, res) => {
let result = {
status: false
};
const acctId = req.body.accountId;
const baseURL = 'http://somecompany.com/billing/';
const dateToday = new Date();
try {
if (accountId) {
result.status = true;
result.bill = baseURL + acctId + '/' + dateToday;
} else {
throw 'Missing accountId';
}
} catch(err){
console.log(err);
}
return res.send(result);
});
module.exports = router;
解决方案
推荐阅读
- firebase-realtime-database - Firebase 数据库 - 创建者可以在它为假的情况下读写吗?
- python - Keras - 尝试连接两个输入
- linux - 在 /dev 文件上设置 root-only 权限并构建二进制文件
- angular - 如果删除逗号,数字管道不会格式化值
- iis - IIS 仅将一个站点重新路由到 Apache
- vue.js - 如何在 vue.js 中启用组件?
- r - 如何将相同的函数应用于 R 中的不同列集?
- angular - 在Angular 2+中获取复选框的选中值
- python - PyCharm 给出“未解决的参考”消息,但可以运行代码
- java - 将 JMenu 用作 JButton