前言:最近要求要写单元测试了,可是对单元测试并没有什么了解,于是赶紧各种google。
最后简单的来说,就是与真实业务逻辑代码完全隔离的另一份差不多相同的代码,这些代码就叫测试代码,可以单独只测试一个方法,一个组件,或者对一个小功能模块的测试,在你的真实业务逻辑代码运行时先运行与之对应的测试代码,看是否达到了预期的要求,做到真实运行前知道错误并且处理。
比如,要测试一个求和的方法,传入2+2,是否进行了正确的相加计算并返回了自己期望的正确的值呢?
开始:jest,是一个专门对javascript代码进行测试的,以前是fecebook自家的,后来开源了,用的人也不少,功能很强大,
使用npm安装:
npm install --save-dev jest
或者通过yarn安装:
yarn add --dev jest
将下面的配置部分添加到你的 package.json 里面:
{
"scripts": {
"test": "jest"
}
}
好了,就是这么简单,安装完成了!
开始编写测试代码:
在项目中新建文件夹:test 测试的代码会全部写在这里,命名格式为,如要测试a.js,相对应的测试代码就是a.test.js,
image.png
完成后如图。
简单的例子,求两个数相加,是否是我期待的和:
image.png
image.png
要测试的和与之对应的测试代码写好后,运行:npm test
image.png
测试通过!没有报错,看了这个方法还是可靠的,那么将toBe(4)改成5,来看看他是如何报错的。
image.png
报错是不是很精准?
jest使用匹配器让你来用不同的方式测试值,不同作用的匹配器太多了,比如:
toBeNull 只匹配 null
toBeUndefined 只匹配 undefined
toBeDefined 与 toBeUndefined 相反
toBeTruthy 匹配任何 if 语句为真
toBeFalsy 匹配任何 if 语句为假
还有其他相对应的string,array,object的匹配器,还有其他如当你运行异步代码时,Jest 需要知道它当前测试的异步代码什么时候完成,才可以运行到下一个测试,最后jest官网在此(支持中文):https://facebook.github.io/jest/zh-Hans/
网友评论