如何对路由功能NodeJS/Mocha/Chai进行单元测试
How to carry unit test on router function NodeJS / Mocha / Chai
如果我想在这个路由器上进行单元测试,看起来应该如何:
router
.post('/set-permission', (req, res) => {
Board.updateBoard(req.body)
.then(resp => {
console.log(resp.permissions);
res.json(resp.permissions);
})
})
module.exports = router;
我在 project/test 中有一个文件夹,里面是包含所需 chai 库的 .js 文件。现在我应该用参数执行这个函数吗?但是怎么办?有人能给我解释一下吗??
您可以为此使用 chai.http,它允许您测试 HTTP 应用程序。只需确保像您已经做的那样导出您的 app
。
// api.spec.js
const chai = require('chai')
const chaiHttp = require('chai-http')
const server = require('../app.js')
chai.should()
chai.use(chaiHttp)
describe('User permissions', () => {
it('sets the user permissions', () => {
// Notice we are sending the request to the `server` export instead
// of a URL
return chai.request(server)
.post('/set-permission')
.then(res => {
res.should.have.status(200)
// add more tests here as you see fit
})
.catch(err => {
throw err
})
})
})
另请注意,这更多的是集成测试而不是单元测试。
如果我想在这个路由器上进行单元测试,看起来应该如何:
router
.post('/set-permission', (req, res) => {
Board.updateBoard(req.body)
.then(resp => {
console.log(resp.permissions);
res.json(resp.permissions);
})
})
module.exports = router;
我在 project/test 中有一个文件夹,里面是包含所需 chai 库的 .js 文件。现在我应该用参数执行这个函数吗?但是怎么办?有人能给我解释一下吗??
您可以为此使用 chai.http,它允许您测试 HTTP 应用程序。只需确保像您已经做的那样导出您的 app
。
// api.spec.js
const chai = require('chai')
const chaiHttp = require('chai-http')
const server = require('../app.js')
chai.should()
chai.use(chaiHttp)
describe('User permissions', () => {
it('sets the user permissions', () => {
// Notice we are sending the request to the `server` export instead
// of a URL
return chai.request(server)
.post('/set-permission')
.then(res => {
res.should.have.status(200)
// add more tests here as you see fit
})
.catch(err => {
throw err
})
})
})
另请注意,这更多的是集成测试而不是单元测试。