紧耦合的成员
- 成员间有直接的相互引用
- 使这些成员难以得到独立的测试
- 修改某些成员很容易影响到其他成员
私有成员
- 封装和隐藏是有用的
- 但这同时也会影响到你要测的点
- 这也并非不可接受,主要取决于你的需要
单例
- 只允许存在一个实例
- 这会使在单元测试需要多个用例的时候遇到麻烦
- 遇到这种情况你需要在每个单元测试前重置单例的状态
匿名函数
- 匿名函数很方便和常见
- 可是因为没有任何引用指向它,这会给单元测试带来不便
mixins(我感觉像紧耦合的扩大版)
- 遇到mixins模式时需要小心
- 测试这样的代码挺周折的
- 它们通常需要你了解每个mixin的细节
New操作符
- 代码中频繁的使用New操作符会给单元测试带来不便
- 试着创建依赖注入或提供足够的信息创建依赖
newBirthday: function(date){
var now = date ? new Date(date) || new Date(),
next = Number.MAX_VALUE,
person;
$.each(this.list, function(index, item){
var dob = new Date(item.dob),
year = dob.setFullYear(now.getFullYear()) > now ? now.getFullYear():now.getFullYear+1,
diff = dob.setFullYear(year) - now;
if(diff < next){next = diff; person = item;};
});
return person;
}