在软件开发中,单元测试是一项非常重要的工作,它可以帮助开发者确保代码的质量和可靠性。而在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中文网其他相关文章!