前端自动化测试

自动化测试框架Jest
安装jest

npm install jest@24.8.0 -D

修改package.json中的test

"scripts": {
   "test": "jest"
 },

运行

npm run test
//配置jest,执行会生成jest.config.js的js文件
npx jest --init
//生成coverage文件夹的测试报告
npx jest --coverage

一般我们都不会使用commonJS语法,会使用import和export进行导出和引入

//math.js
export function add(a,b){
    return a + b
}
//math.test.js
import {add,reduce} from './math';
test('测试加法 3+7',() => {
    expect(add(3,7)).toBe(10)
})

这样我们在执行npm run test的时候就会报错,因为node不识别import的语法,所以jest也无法识别,可以通过安装babel来改善代码

npm install @babel-core@7.4.5 @babel-preset@7.4.5 -D

使用babel需要在项目的根目录下创建.babelrc文件,

{
    "presets":[
        ["@babel/preset-env",{
            "targets":{
                "node":"current"
            }
        }]
    ]
}

jest中的匹配器:

toBe():只匹配内容是否一样,涉及引用
toEqual():只匹配内容是否一样,不会涉及引用
toBeNull():匹配值是否是null,是则通过,不是则否
toBeUndefined():匹配值是否是undefined
toBeDefined():匹配值是否被定义
ToBeTruthy():匹配值是否是true
toBeFalsy():匹配值是否是false
not:取反
用法:
test('not匹配器',()=>{
	const a=1 //true
	expect(a).not.toBeFalsy()  //代表是true
	等价于:
	expect(a).ToBeTruthy()
})
//数字相关的匹配器
toBeGreaterThan():希望匹配值比某个值大
例:test('toBeGreaterThan匹配器',()=>{
	const a=10
	expect(a).toBeGreaterThan(9)//通过
	expect(a).toBeGreaterThan(11)//不通过
})
toBeLessThan():希望匹配值比某个值小
toBeGreaterThanOrEqual():希望匹配值比大于等于某个值
toBeLessThanOrEqual():希望匹配值比小于等于某个值
toBeCloseTo():匹配值是浮点数时
例:test('toBeCloseTo匹配器',()=>{
	const a=0.1
	const b = 0.2
	expect((a + b )).toBeCloseTo(0.3)//通过
})

和字符串相关的匹配器

toMatch():匹配值都否包含某个值

和数组相关的匹配器

toContain():匹配值是否包含某一项
toThrow():匹配项是否抛出异常

异步函数的测试:

//fetchData.js 异步函数
import axios from "axios"
import { fn } from "_jest-mock@24.9.0@jest-mock"
export const fetchData = (fn)=>{
    axios.get("http://www.dell-lee.com/react/api/demo.json")
    .then((res)=>{
        fn(res.data)
    })
}
//test.fetchData.js  测试异步函数
import {fetchData} from "./fetcData"
test("fetchData 返回结果为{success:true}",(done)=>{
    fetchData((data)=>{
        expect(data).toEqual({
            success:true
        })
        done();
    })
})
//失败情况下的测试异步函数
test("fetchData 返回结果为404",(done)=>{
	expect assertions(1)
    return fetchData().catch((e)=>{
		expect(e.toString().indexOf("404")>-1).toBe(true)
	})
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值