单元测试框架
- YUI test(客户端测试)
- BDD测试框架
Vows http://vowsjs.org
Jasmine
编写单元测试要点
- 隔离(外部依赖,使用 模mock / 桩stub / 测试替身test double)
- 范围(要小,一个测试只测一种情况)
- 定义函数
注释
测试用例 - 正向测试(测对的)
- 负向测试(测异常)
- 代码覆盖率
低于50%,标红
60%-80%,最佳范围
80%以上,牛逼!!(不过收益会递减)
真实场景测试
- 测试替身
测试替身描述的是使用stub或mock模拟依赖对象进行测试
在同一时间,替身可以用stub表示,也可以使用mock表示,以确保外部方法和API调用,并判断被调用了多少次,捕获所调用的参数,并返回相应
在方法如何被调用方面,能记录或捕获相关信息的测试替身,被称为间谍(spy) - MOCK对象
用于验证函数能够正确调用外部API,例如模拟下面的hub.fire()
function buySomething(event){
hub.fire('addToShoppingCart',{item:event.target.id})
}
- stub对象
用于向被测试函数返回所封装的值,例如模拟这个函数的item
function addToShoppingCart(item){
if(item.isSaleOver()){
console.log('缺货')
}else{
console.log('添加购物车成功')
}
}
- spy对象
封装真正的对象,覆盖一些方法让调用通过,可以类比于python的装饰器函数 - 异步测试
比如点击后的按钮变化,数据相应重新渲染这种
运行客户端javascript单元测试
- phantomJS http://phantomjs.org
可以通过编程方式访问的webkit内核浏览器,一个很合适的宿主环境
支持渲染PDF文件,jpg文件
支持生成快照
page.onConsoleMessage(msg)
可以监听到打印事件 - selenium http://seleniumhq.org
在真实的浏览器环境运行单元测试
安装不同的浏览器驱动,可以支持移动端测试
ghost driver项目为解决selenium 运行慢而生,使用phantomJS作为后端
运行服务器端javascript单元测试
- Jasmine https://jasmine.github.io/
npm install jasmine-node -g
安装
BDD(Behavior Driven Development)测试框架
TDD BDD 这个文章写得很好,推荐一看 https://www.cnblogs.com/Leo_wl/p/4780678.html
小结
用框架就对了
网友评论