单元测试
- 测试类型有多种,单元测试、集成测试等,本文主要是讲单元测试
- 在单元测试中,常用的方法论有两个:TDD & BDD
- TDD
Test-Driven Development,测试驱动开发,测试先于编写代码的思想,TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。 - BDD
Behavior Driven Development,行为驱动开发,BDD描述的行为就像一个个的故事(Story),系统业务专家、开发者、测试人员一起合作,分析软件的需求,然后将这些需求写成一个个的故事。开发者负责填充这些故事的内容,测试者负责检验这些故事的结果。
摘自:TDD和BDD
- TDD
Why?
- 可以保证代码质量
- 减少人力测试过程
- 用来表达设计或作为文档记录
What?
- 比如一个组件,测试的内容:组件的渲染结果、模拟用户事件组件的函数是否会被正确调用等。
- 比如一个工具类,测试的内容:函数的调用是否返回预料结果等。
How?
工欲善其事,必先利其器,在如何测试之前,先了解一些测试工具,有mocha、karma、assert、should.js等,以下介绍各自的功能及使用。
mocha
mocha是一个js测试框架,优势是支持多种类型的断言libs,支持异步和同步测试,支持多种方式的结果导出。
它还是个命令行工具,安装完成后可直接在命令行运行mocha命令。
开发只需在mocha提供的全局函数(比如describe,it)中编写测试并运行,就可生成测试报告。
- describe(‘description’,()=>{})
用来包裹一组相关的测试 - it(‘测试名’,()=>{})
用来包裹一个单独的测试
assert
什么是断言:编写代码时会做出一些假设,断言就用于在代码中捕捉这些假设,如果最终结果与假设不成立,会抛出一个错误。
assert是基于node的一个模块,负责断言。
API:http://nodejs.cn/api/assert.html
should.js
should.js也是一个断言库
github:https://github.com/shouldjs/should.js
API:https://shouldjs.github.io/
karma
karma是一个测试工具,生成一个Web服务器,该服务器针对每个连接的浏览器的测试代码执行源代码。针对每个浏览器的每个测试的结果都经过检查并通过命令行显示给开发人员,以便他们能够看到哪些浏览器和测试通过或失败。
官网:https://karma-runner.github.io/3.0/index.html
Travis CI
Travis CI 是一个提供持续集成服务的平台,它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。
官网:https://www.travis-ci.org/getting_started
主要添加.travis.yml文件