关键词搜索

源码搜索 ×
×

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

发布1970-01-01浏览536次

详情内容

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

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

clipboard1

我看到你之前有个提交把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的另一端负责接收。
这种模式的最佳实践是,发布者不关心发布数据的格式,只是简单粗暴的把数据推送出去,具体不同的处理由接收方负责,比如接收方的伪代码可能是这样的:

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的流程能同时工作,谢谢。这也能提高你编程的水平。

    clipboard2

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载