首頁 >後端開發 >Golang >如何在 Go 中模擬導入函數以進行有效測試?

如何在 Go 中模擬導入函數以進行有效測試?

Linda Hamilton
Linda Hamilton原創
2024-12-25 03:55:17294瀏覽

How Can I Mock Imported Functions in Go for Effective Testing?

導入函數的部分模擬

在 Go 中,測試依賴從外部套件導入的函數的函數可能具有挑戰性。考慮以下範例:

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}

我們可以在 Go 中模擬 z.SomeFunc() 嗎?

重建模擬

,帶有簡單的程式碼修改。透過引入函數類型變數 zSomeFunc 並使用 z.SomeFunc 對其進行初始化,包碼可以呼叫該變數而不是 z.SomeFunc()。這允許我們在測試期間模擬導入的函數。

var zSomeFunc = z.SomeFunc

func abc() {
    ...
    v := zSomeFunc()
    ...
}

測試中的模擬

在測試中,我們可以為 zSomeFunc 分配一個自訂函數,該函數的行為符合測試需求。

func TestAbc(t *testing.T) {
    // Save current function and restore at the end:
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}

透過重構程式碼,我們可以模擬導入的函數並更有效地測試它們對我們程式碼的影響。在測試第三方相依性或隔離特定功能以進行目標測試時,此技術特別有用。

以上是如何在 Go 中模擬導入函數以進行有效測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn