如何在NodeJS中正确编写路由器模块的单元测试

时间:2019-02-21 10:33:39

标签: node.js unit-testing express mocha sinon-chai

我是NodeJS和测试的新手,我想知道如何正确测试应用程序路由。我已经阅读了一些使用 supertest chai-http 来调用POST方法的文章,但我相信这种方式更多的是集成测试,而不是对应用程序进行单元测试

我已经读过有关Sinon的内容,但是我很难将其应用到我的代码中,就像我不知道要存根什么,如何操纵请求主体中的数据以便覆盖我的不同分支一样条件语句。我正在用 nyc 监视我的代码覆盖率,因此我也旨在增加我的单元测试覆盖率。

如果有人可以指导我,我将非常感激。提前致谢!

server.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;

generateURL.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;

0 个答案:

没有答案