首页 >后端开发 >Golang >Go:单元测试中函数的模拟返回值

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

王林
王林转载
2024-02-09 23:39:091249浏览

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:单元测试中函数的模拟返回值的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除