單元測試Vimscript內(nèi)置:是否可以重寫/模擬或注入替代?
I在CoC插件中發(fā)現(xiàn)了一個bug,我本打算修復(fù)這個bug,但首先我想編寫一些文檔/學(xué)習(xí)測試以及回歸測試。問題是如何進行的:除了存在維德維姆project.我想測試的代碼
解答動態(tài)
我也不認為這是可能的。
我認為您可能會找到一個解決方案,這取決于對has()調(diào)用的方式用過。有時您將能夠覆蓋調(diào)用has()的直接結(jié)果(如更改/刪除函數(shù)/命令。。。這取決于has()結(jié)果),其他情況下是不可能的。
在所有情況下,如果要模擬的插件直接使用內(nèi)置函數(shù),則不可能覆蓋此函數(shù)。充其量,您可以將整個插件復(fù)制到其他地方,用對您的#mock#has()的調(diào)用替換對has()的所有調(diào)用,并更新運行時路徑以使用這個手動模擬的fork.
PS:Vim的單元測試框架很少。我甚至還保留了一個。
我會說,即使有可能,用這種方式嘲笑has也不是一個好的做法。相反,您應(yīng)該直接針對您試圖支持的vim版本進行測試。許多vim插件都有CI管道,用于測試最新版本的vim、vim8.0、vim7.4、各種neovim版本等。github和gitlab中的自動化測試框架使得這非常容易。類似地,您可以使用不同的vim構(gòu)建和配置,包括和不包括各種特性。
我建議這樣做的原因是vim經(jīng)常以微妙的方式進行更改,而不僅僅是“添加特性”。通常,當添加特性、函數(shù)、命令等時,其他相鄰的事物都會被修復(fù)和更改。最好針對實際部署進行測試。
此外,如果需要測試has(代碼)的“異常”分支,最好直接測試需要使用的組件。如果If has(的內(nèi)容非常長且復(fù)雜,那么通常來說,重構(gòu)代碼以允許真正的“單元”測試比開始模擬可能在下一個代碼版本中中斷的內(nèi)容要好一些。- End
免責(zé)聲明:
本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請您根據(jù)自身實際情況謹慎操作。尤其涉及您或第三方利益等事項,請咨詢專業(yè)人士處理。