使用jest和supertest进行对api接口的测试
要使用koa脚手架创建项目,koa-generator中间件,我自己创建的项目程序入口是app.js,而脚手架创建的是在bin/www
**安装:**npm install -g koa-generator
命令: koa2+项目名生成项目
自己创建项目时进行测试时出现了这两个报错,使用脚手架创建的项目就没有出错
1、在package.json中添加test,需要使用到中间件cross-env,动态配置开发,测试,生产三种对应域名及其及打包命令。使用cross-env可以让配置环境更加清晰明了还好管理,
2、安装中间件supertest,对api接口测试需要使用supertest,使用expert断言,supertest是一个非常好的适用于node的模拟http请求的库。
3、中间件nodemon作用是每次修改后不需要自己手动重启项目
4、“test”中 --runInBand指一个一个往下执行,–foreExit指执行完退出,–colors指使用颜色输出
5、中间件jest,测试文件后缀必须是.test.js的,会自动扫描test文件夹下的后缀是.test.js文件进行测试
安装: npm install --save-dev cross-env
安装: npm install --save-dev supertest
安装: npm install --save-dev jest
文件server.js
//对api接口测试需要使用supertest,使用expert断言,supertest是一个非常好的适用于node的模拟http请求的库
const request = require('supertest')
//引入产生请求的程序入口app.js
const server = require('../app').callback()
module.exports = request(server)
文件demo.test.js——使用jest进行单元测试,文件后缀必须是test.js
const server = require('./server.js')
//测试get请求(测试routes/index.js下的'/')
test('返回的数据格式正确', async () => {
const res = await server.get('/')
//添加断言toEqual是比较对象的,toBe比较值
/* expect(res.body).toEqual({
title: 'Hello Koa!'
}) */
expect(res.body.title).toBe('Hello Koa!')
})
//测试普通方法
function sum(a, b) {
return a + b
}
test('30', () => {
const res = sum(10, 20)
expect(res).toBe(30)
})