在軟體開發中,單元測試是一項非常重要的工作,它可以幫助開發者確保程式碼的品質和可靠性。而在Go語言中,我們可以使用一些函式庫和技術來模擬函數的回傳值,以便更好地進行單元測試。本文將由php小編小新為大家介紹Go語言中實作函數模擬回傳值的方法,幫助開發者更好地進行單元測試,提升程式碼的品質與可維護性。
我在 golang 中建立了一個小腳本(我的第一個 golang 專案)。
範例:
package main import ( "fmt" "math/rand" ) func main() { i := rand.Intn(10) foo := foo(i) if foo { fmt.Printf("%d is even!", i) // more code ... } else { fmt.Printf("%d is odd!", i) // more code ... } } func foo(i int) bool { if i%2 == 0 { return true } else { return false } }
我想為每個函數建立一個小型單元測試。 對於“main()”,我想模擬函數“foo()”的回傳值,因為我不會測試“foo()”,而是測試main()程式碼的其餘部分。
我正在尋找一種簡單的方法來存根/模擬回傳值。 我剛剛發現了帶有結構或介面等的模擬。但我沒有在程式碼中使用這些元素(這是一個簡單的專案)。
使用一個現實的、最小的、可重現的範例:如何建立一個最小的、可重現的範例。
例如,在 go 中,
package main import ( "fmt" "math/rand" ) func iseven(i int) bool { return i%2 == 0 } func side(n int) string { if iseven(n) { return "right" } else { return "left" } } func main() { n := 1 + rand.intn(10) hand := side(n) fmt.printf("number %d is on the %s-hand side of the street.\n", n, hand) }
https://www.php.cn/link/7c63a554c36ea63c77723a472b7ca20f
number 9 is on the left-hand side of the street.
使用go測試套件對side
函數進行單元測試。您也可以直接對 iseven
函數進行單元測試。 main
函數不應包含任何要進行單元測試的程式碼。
package main import ( "testing" ) func TestSide(t *testing.T) { n := 7 got := side(n) want := "left" if got != want { t.Errorf("side(%d) = %s; want %s", n, got, want) } }
以上是Go:單元測試中函數的模擬回傳值的詳細內容。更多資訊請關注PHP中文網其他相關文章!