Upload
tb-vertical-guide
View
159
Download
6
Embed Size (px)
Citation preview
苏河
单元测试的目标
• 函数
• 对象的属性和方法
• 业务逻辑
代码可测试性的问题
•面向过程,过程嵌套
•太多的dom操作
• 展现逻辑和业务逻辑混淆
•闭包,匿名函数
•异步操作
综上
• 面向过程,过程嵌套
• 太多的dom操作
• 展现逻辑和业务逻辑混淆
• 闭包
• 异步操作
• ……
• 如何提升可测试性?
•抽象
抽象的原则
• 代码细分职责,粒度化,达到单元和过程
分离的目的
抽象的原则
• 将数据处理和dom分开
抽象的原则
• 避免使用闭包,如果要使用,请公开测试
接口,减少匿名函数的使用
抽象的原则
• 异步调用的函数可以用waitsfor保证执行顺
序
• 继续提升可测试性
•分层
Javascript
1.构建Js本地对象
2.处理数据逻辑
3.与 Server 通信
4.添加事件回调
5.操作DOM,BOM
BOM
UI
Model
DOM
Javascript
Server
Control
View Control
Model
obj
obj obj
obj
obj
obj
obj obj
obj instantia
tion
process
bindEvent
…
MVC对象结构
ViewObj
_Attr:value1
AttrEl:someEl
getUIData:function(){
//…
}
setUI:function(){
//…
}
1.获取DOM,BOM数据
2.修改DOM和BOM
3.处理展现层逻辑
ModelObj
_Attr1:value1
_Attr2:value2
_Method:function(){
//…
}
Method:function(){
//…
}
1.建立业务数据模型
2.处理数据间的逻辑关系
3.提供数据访问器
4.预留数据事件接口
Control
Var objUI = new View();
Var obj = new Model();
Function Process1(){
//…
}
Function Process2(){
//…
}
E.on(someEl,’event’,
process1);
1.对象实例化
2.初始化
3.定义过程,实现view
和model层对接
4.事件绑定
第二部分
• 基于kelude平台的自动化单元测试
•Q&A