Go 中的猴子修補:測試遺留程式碼的解決方案
雖然Go 對介面的依賴使模擬變得簡單,但可能會出現您需要的情況測試程式碼而不改變它。如果程式碼的結構不適合使用介面並且高度互連,那麼傳統的模擬技術可能會具有挑戰性。
幸運的是,Go 確實為這個問題提供了解決方案:猴子補丁。該技術允許您在運行時修改物件。要實現它,請建立一個介面來包裝要模擬的原始結構:
type MyInterface interface { DoSomething(i int) error DoSomethingElse() ([]int, error) }
接下來,將原始結構嵌入到具體結構中,並在具體結構中實現介面的方法:
type Concrete struct { *somepackage.Client } func (c *Concrete) DoSomething(i int) error { return c.client.DoSomething(i) } func (c *Concrete) DoSomethingElse() ([]int, error) { return c.client.DoSomethingElse() }
此修改後的程式碼可讓您以與模擬Client 類型相同的方式模擬Concrete 類型,從而提供了測試程式碼的解決方案,而無需更改原始程式碼庫。
以上是Go 中的 Monkey 補丁如何解決遺留程式碼測試挑戰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!