我是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;