在软件开发中,单元测试是一项非常重要的工作,它可以帮助开发者确保代码的质量和可靠性。而在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:单元测试中函数的模拟返回值的详细内容,更多请关注编程网其它相关文章!