前端现在日益壮大,再也不是那个只是写写页面,调调样式的小员工了,现在前端工程师要做的能做的太多了。
那么多框架使我们的开发越来越快,效率越来越高,高产率下也需要强大的测试工具保证我们的代码功能完美。
在现在推崇的函数式编程模式下,纯函数和业务分级,让我们的代码越来越好,维护和升级都很方便,基于这些函数式编程的代码我推荐一些好用的测试工具
单元测试(最小功能函数的输出值)
断言库(最小单元是否可用的),
- better-assert(TDD 断言库)
- should.js(BDD 断言库)
- expect.js(BDD 断言库)
- chai.js(TDD,BDD 双模断言库,使用最多)
- jasmine.js(BDD 断言库)
- Node.js 自身集成的 require(“assert”)
- intern(比较大,功能比较全面的单元测试框架)
- qunit(jquery 的测试框架)
- macaca(来自阿里巴巴,一套完整的自动化测试解决方案,少人维护)
注:
TDD(先写测试用例,再开发功能,测试值 = = 输入值,反了就会报错 -- 国外用得多)assert("我是测试值" = = 单元输出结果)
BDD(先写功能,再测试 -- 国内比较多,基本都是业务驱动功能使用)expect(1).toEqual(fn())
karma 集成测试环境
karma 自动化 runner 集成 PhantomJS 无刷新
cnpm i -g karma
cnpm i karma-cli --save-dev
cnpm i karma-chrome-launcher --save-dev
cnpm i karma-phantomjs-launcher --save-dev
cnpm i karma-mocha --save-dev
cnpm i karma-chai --save-dev
// 测试覆盖率的包,可生成测试报表
cnpm i karma-coverage --save-dev
e2e 测试
- selenium-webdriver
- nightwatch(配置很麻烦,有很多 JDK 环境)
UI 测试
- Phantomcss(不好用)
- BackstopJS
- f2etest(UI 自动化录入,可以记录各种界面操作,生成相应的脚本代码,主要针对 nightwatch 使用)
service 测试
- mocha
-
mochawesome:
- node 后端:supertest(app.listen()),后面接接口方法(get,post)和 path,再跟 expect() 测试接口的返回状态和返回数据的类型,最后需要 end 函数收尾,调用为链式
- 非 node 后端:fetch(“ 地址路径 ”),在 fetch 回调函数操作测试结果
比较新的工具
- jest:项目绑定使用多,比如 vuecli 构建的项目,一站式解决所有测试
- rize 是 PhantomJS 的替代品,PhantomJS 已经不更新了
- puppeteer 广泛用于爬虫或 UI 测试