Go:单元测试中函数的模拟返回值

2024年 2月 10日 60.2k 0

go:单元测试中函数的模拟返回值

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

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论