一、单元测试
- 单元测试,如下所示:
- 单个功能或接口,给定输入,得到输出,看输出是否符合要求
- 需手动编写用例代码,然后统一执行
- 能一次性执行所有单测,短时间内验证所有功能是否正常
-
通过
npm i jest supertest --save
命令下载jest
和supertest
-
在
package.json
文件中scripts
进行配置,如下所示:
"scripts": {
"start": "node bin/www",
"dev": "cross-env NODE_ENV=dev ./node_modules/.bin/nodemon --inspect=9229 bin/www",
"prd": "cross-env NODE_ENV=production pm2 start bin/www",
"lint": "eslint --ext .js ./src",
"test": "cross-env NODE_ENV=test jest --runInBand --forceExit --colors"
},
- 在
node JS
项目中新建test
文件夹,新建demo.test.js
,使用expect
断言,代码如下所示:
/**
* test demo
*/
function sum (a,b) {
return a + b
}
test('10 + 20 应该等于 30', () => {
const res = sum(10,20)
expect(res).toBe(30)
})
-
通过
npm run test
命令进行单元测试,如下所示 -
在
test
文件夹中新建server.js
和json.test.js
文件,进行http
单元测试,代码如下所示:
server.js
,如下所示:
/**
* jest server
*/
const request = require('supertest')
const server = require('../src/app').callback()
module.exports = request(server)
json.test.js
,如下所示:
/**
* json test
*/
const server = require('./server')
test('json 接口返回数据格式正确', async () => {
const res = await server.get('/json')
expect(res.body).toEqual({
title: 'koa2 json'
})
expect(res.body.title).toBe('koa2 json')
})
index.js
,如下所示:
router.get('/json', async (ctx, next) => {
ctx.body = {
title: 'koa2 json'
}
})
- 通过
npm run test
命令进行单元测试,如下所示: