首页 > 解决方案 > 如何在 NodeJS 中正确编写路由器模块的单元测试

问题描述

我是 nodeJS 和测试的新手,我想知道如何正确测试我的应用程序路由。我已经阅读了一些使用supertestchai-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;

标签: node.jsunit-testingexpressmocha.jssinon-chai

解决方案


推荐阅读