一。前端自动化测试
大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了“人肉测试机”,完全没必要自己来。但随着项目体量的增大,许多人维护同一份代码,经常会出现有些函数莫名其妙地结果不对了,或者某个接口的入参变了,又或者哪位大哥把后端返回的数据结构给改了。每天工作的时间里被拉来拉去帮人定位问题,结果花了很多时间却发现大部分都是别人的锅。每当遇到项目上的线,那就更热闹了,跟着其他“人肉测试机”大家一起点点点…
很多团队都有个通病,凡是出了问题,先往前端身上推,然后前端各种检测排查,到最后是谁的锅,谁呵呵一笑然后领走就完的了,如果你也曾因此心里印下了不计其数的草泥马的马蹄印,那我强烈建议你学习【前端自动化测试】相关的知识,或许你不会经常用到它,但在组内互怼和甩锅的环节绝对能助你一臂之力。当然总有一天,你会发现测试的价值远不止这样。<强>它对大型项目提供的可靠性保障是人力无法比拟的强>。
前端很流行这样一句话:如果你觉得单元测试没什么用,只能说明你做的项目不够大。
引用>二。工具简介
2.1业力
官方网址:https://karma-runner.github.io/2.0/index.html
<强> 代码>为<代码>业力前端自动化测试提供了跨浏览器测试的能力>强,可以自动在<代码> Chrome 代码>,<代码> Firefox 代码>,<代码>即代码>等主流浏览器依次跑完测试用例,同时也支持无头浏览器(入<代码> phantomJs> 代码)中运行测试用例。<代码> webpack> 代码+ <代码>巴别塔> 代码可以主动为想要适配的浏览器提供转码和垫片补丁引入能力,而<代码> 代码>业力可以为最终的结果提供验证能力。<代码> 代码>的业力配置方式可以阅读《webpack4.0各个击破(9)——业力篇》进行了解。
2.2摩卡
<强> <代码>摩卡> 代码是前端自动化测试框架>强,测试框架需要解决<强>兼容不同风格断言库强>,<强>测试用例分组强>,<强>同步异步测试架构强>,<强>生命周期钩子强>等框架级的能力。
<李> <代码>摩卡> 代码的基本语法李>
<代码类=" language-js ">描述(“我现在要测某一个页面的几个功能的,函数(){ 描述(“现在要测XX功能的,函数(){ (“某个变量的值应该是数字”,函数(){//写断言 }) }); 描述(“现在要测YY功能的,函数(){ (“某个数组长度应该不小于10”,函数(){//写断言 }) }); })代码><李>异步测试语法李>
<代码类=" language-js ">描述(“现在要测XX功能的,函数(){ (“某个变量的值应该是数字”,函数(){//写断言//手动调用完成()表示异步结束,类似于中承诺的决心 }) });代码><李>
不同风格的断言库
支持<代码> should.js 代码>,<代码> expect.js> 代码及节点核心断言模块<代码>断言代码>等。
李> <李>生命周期钩子
生命周期钩子一般用来建立和清理环境或全局变量。
李><代码类=" language-js "> 描述(“钩子”,函数(){ 之前(函数(){//运行在所有测试这一块 }); 后(函数(){//运行在所有测试这一块 }); beforeEach(函数(){//运行在每个测试这一块 }); afterEach(函数(){//运行在每个测试这一块 });//测试用例 });代码>2.3茶
<强> <代码>茶> 代码是一个断言库合集>强,支持<代码>预计代码>,<代码>断言代码>,<代码> 代码>应该断言语法,非专业测试岗位其实没必要深,究了解使用方法就可以了。使用示例:
<代码类=" language-js ">期待(bar) .to.not.exist;//断言变量杆不存在 期望(数据).to.have.ownProperty(长度);//断言数据有长度属性 期望(名字).to.be.a(“字符串”);//断言名称是一个字符串 assert.equal (value1, value2);//断言value1和value2相等 Tim.should.be.an.instanceof(人);//断言蒂姆是人类的实例大前端的自动化工厂(5)——基于业力+咖啡+茶的单元测试和接口测试