且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-13 11:59:37

因为后台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的另一端负责接收。

这种模式的***实践是,发布者不关心发布数据的格式,只是简单粗暴的把数据推送出去,具体不同的处理由接收方负责,比如接收方的伪代码可能是这样的:

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


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