前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用脚手架应用做单元测试

使用脚手架应用做单元测试

作者头像
Jerry Wang
发布2019-11-05 16:52:37
7420
发布2019-11-05 16:52:37
举报

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://jerry.blog.csdn.net/article/details/100666523

因为后台service比较复杂,需要三个不同的实例协同工作,所以之前Oliver开发了Scaffolding App这个Angular前端,目的是方便我们随时测试三实例协同是否仍然正常。

我想的是把这个Angular前端当成一个单元测试工具来用,每次我们改了后台之后,都把这个Angular UI打开跑一跑。

我看到你之前有个提交把client.write(data) 注释了,换成client.emit(data[0], data[1]);

我想你这个改动肯定是for昨天串QR code的scenario的,但是这样一改,之前的unit test就fail了。

你用emit(data[0], data[1])这种写法不太好:

这个函数通过回调方式被调用,你在函数体内作为被调用者,无法知道data的数据类型,而你直接硬编码成data[0], data[1]. 这就告诉了代码的阅读者: data是一个至少包含了两个元素的数组 data是一个至少包含了两个字符的字符串

当运行时data的数据类型不满足以上两个条件时,代码就会报异常,退出。 这里无论是client.write,还是client.emit, 我们都可以把它看成是广义的发布者模式,会有socket的另一端负责接收。 这种模式的最佳实践是,发布者不关心发布数据的格式,只是简单粗暴的把数据推送出去,具体不同的处理由接收方负责,比如接收方的伪代码可能是这样的:

代码语言:javascript
复制
If( typeof(data) === “String”)
     按照字符串处理
If( typeof(data) === “Array”)
     按照数据处理
If( typeof(data) === “Object”)
      按照对象处理

而你现在发送端的data[0], data[1], 从design上说相当于把这种处理从接收端移到发送端了。

为了不影响我们QR code scan的功能,我只是在你提交基础上简单加了一行注释,注明client.write(data)的必要性。

麻烦你有时间的时候,琢磨下如何改动现在的代码,使得单元测试和QR code scan的流程能同时工作,谢谢。这也能提高你编程的水平。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档