node—使用中间件jest和supertest进行对api接口的测试

使用jest和supertest进行对api接口的测试

要使用koa脚手架创建项目,koa-generator中间件,我自己创建的项目程序入口是app.js,而脚手架创建的是在bin/www

**安装:**npm install -g koa-generator

命令: koa2+项目名生成项目

自己创建项目时进行测试时出现了这两个报错,使用脚手架创建的项目就没有出错

Snipaste_2020-07-03_09-50-22.png

Snipaste_2020-07-03_09-51-49.png

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

Snipaste_2020-07-03_09-15-50.png

Snipaste_2020-07-03_09-28-47.png

文件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)
})
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Vue 项目中的查询接口和新增接口,我们可以使用 Jest 进行自动化测试用例编写。 首先,我们需要安装 Jest 和 vue-test-utils: ``` npm install --save-dev jest vue-jest @vue/test-utils ``` 接着,在项目根目录下新建一个 `__tests__` 目录,用于存放测试用例文件。在该目录下新建一个 `example.spec.js` 文件,用于编写测试用例。 下面是一个针对查询接口和新增接口的示例测试用例: ```javascript import { mount } from '@vue/test-utils' import axios from 'axios' import Example from '@/components/Example.vue' jest.mock('axios', () => ({ get: jest.fn(() => Promise.resolve({ data: {} })), post: jest.fn(() => Promise.resolve({ data: {} })) })) describe('Example.vue', () => { it('fetches data when mounted', async () => { const wrapper = mount(Example) await wrapper.vm.$nextTick() expect(axios.get).toHaveBeenCalledWith('/api/data') }) it('sends data when form is submitted', async () => { const wrapper = mount(Example) await wrapper.find('form').trigger('submit') expect(axios.post).toHaveBeenCalledWith('/api/data', expect.anything()) }) }) ``` 在测试用例中,我们使用 `jest.mock` 来模拟 axios 的 get 和 post 方法,并设置它们返回一个空对象。然后,我们使用 `mount` 方法来挂载 Example 组件,并在测试中触发组件的 mounted 和 form submit 事件,分别测试查询接口和新增接口是否被正确调用。 最后,我们可以在命令行中运行 `jest` 命令来执行测试用例: ``` jest ``` 执行完成后,我们可以看到测试结果。如果测试通过,将会显示绿色的字体,否则将会显示红色的字体,并提示错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值