EA&UML日拱一卒-微信小程序实战:位置闹铃 (16)-单元测试是个技术活
EA&UML日拱一卒-微信小程序实战:位置闹铃 (16)-单元测试是个技术活
我们的选择是,在实地测试之前,用尽量少地代价做好单元测试。
测试对象
系统调用index的onTimer函数(实际上是一个无名函数)。onTimer函数调用app的checkAlarms函数。checkAlarm函数调用app的checkAlarmsImpl函数checkAlarmsImpl调用util.getLocation函数取得现在的位置信息。checkAlarmsImpl取得每个监控点alarm并用getLocation取得的位置信息调用alarm的checkLocation方法alarm的checkLocation方法调用getDistance方法取得现在位置到监控点的距离。alarm的enterAlarmCheck根据最新的距离信息进行状态迁移处理。
测试方法
其他的都好说,这里唯一的测试难点就是位置变化,我们采用了最为简单粗暴地方式:直接修改alarm的getDistance方法。
getDistance: function (latitude, longitude) { var test = [800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 52, 43, 53, 81, 101, 201, 301, 401, 501, 502, 403, 304, 204, 105, 96, 87, 78, 69, 50, 41, 42, 43, 54, 89, 100, 110, 123, 145, 156] if(this.testIndex < test.length){ return test[this.testIndex++] }else{ return 0 } //return util.getDistance(this.latitude, this.longitude, latitude, longitude) },
函数的本来功能已经被屏蔽掉,直接修改为每次返回数组中的数字。通过修改数组的内容我们可以模拟各种运动情况。
也许你觉得修改uitl.getLocation函数也是一种方式,但是它有两个问题:一是这个函数有可能在其他地方被调用,二是生成的数据必须是经纬度,很麻烦。
其实getDistance这个函数就是为了单元测试才设计出来的。
单元测试是个技术活。
写在文章的最后
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~