使用脚手架应用做单元测试
因?yàn)楹笈_(tái)service比較復(fù)雜,需要三個(gè)不同的實(shí)例協(xié)同工作,所以之前Oliver開發(fā)了Scaffolding App這個(gè)Angular前端,目的是方便我們隨時(shí)測試三實(shí)例協(xié)同是否仍然正常。
我想的是把這個(gè)Angular前端當(dāng)成一個(gè)單元測試工具來用,每次我們改了后臺(tái)之后,都把這個(gè)Angular UI打開跑一跑。
我看到你之前有個(gè)提交把client.write(data) 注釋了,換成client.emit(data[0], data[1]);
我想你這個(gè)改動(dòng)肯定是for昨天串QR code的scenario的,但是這樣一改,之前的unit test就fail了。
你用emit(data[0], data[1])這種寫法不太好:
這個(gè)函數(shù)通過回調(diào)方式被調(diào)用,你在函數(shù)體內(nèi)作為被調(diào)用者,無法知道data的數(shù)據(jù)類型,而你直接硬編碼成data[0], data[1]. 這就告訴了代碼的閱讀者:
data是一個(gè)至少包含了兩個(gè)元素的數(shù)組
data是一個(gè)至少包含了兩個(gè)字符的字符串
當(dāng)運(yùn)行時(shí)data的數(shù)據(jù)類型不滿足以上兩個(gè)條件時(shí),代碼就會(huì)報(bào)異常,退出。
這里無論是client.write,還是client.emit, 我們都可以把它看成是廣義的發(fā)布者模式,會(huì)有socket的另一端負(fù)責(zé)接收。
這種模式的最佳實(shí)踐是,發(fā)布者不關(guān)心發(fā)布數(shù)據(jù)的格式,只是簡單粗暴的把數(shù)據(jù)推送出去,具體不同的處理由接收方負(fù)責(zé),比如接收方的偽代碼可能是這樣的:
而你現(xiàn)在發(fā)送端的data[0], data[1], 從design上說相當(dāng)于把這種處理從接收端移到發(fā)送端了。
為了不影響我們QR code scan的功能,我只是在你提交基礎(chǔ)上簡單加了一行注釋,注明client.write(data)的必要性。
麻煩你有時(shí)間的時(shí)候,琢磨下如何改動(dòng)現(xiàn)在的代碼,使得單元測試和QR code scan的流程能同時(shí)工作,謝謝。這也能提高你編程的水平。
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號(hào)"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的使用脚手架应用做单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP UI5 library-dbg.
- 下一篇: 权证股票怎么买