首頁 >後端開發 >Golang >如何正確測試 Golang 中的參數傳遞?

如何正確測試 Golang 中的參數傳遞?

Susan Sarandon
Susan Sarandon原創
2024-12-07 17:34:13850瀏覽

How to Correctly Test Argument Passing in Golang?

測試 Golang 中的參數傳遞

在 Golang 中,可以使用標誌將參數傳遞給函數。要測試參數的傳遞,可以寫一個測試來模擬命令列參數的傳遞。

問題

執行以下測試時:

import (
    "os"
    "testing"
)

func TestArgs(t *testing.T) {
    expected := "bla"
    os.Args = []string{"-user=bla"}

    actual := passArguments()

    if actual != expected {
        t.Errorf("Test failed, expected: '%s', got:  '%s'", expected, actual)
    }
}

測試失敗,並顯示錯誤訊息,指示預期結果(「bla」)與實際結果不符(“root”)。

出現問題的原因是 os.Args 中的第一個值是執行檔本身的路徑。要解決此問題,應更新os.Args 切片以包含可執行檔和參數:

os.Args = []string{"cmd", "-user=bla"}

此外,os.Args 是全域變量,因此建議保存原始狀態並測試結束後恢復,防止幹擾其他測試:

oldArgs := os.Args
defer func() { os.Args = oldArgs }()

以上是如何正確測試 Golang 中的參數傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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