首页 >后端开发 >Golang >如何在 Go 中模拟导入函数以进行有效测试?

如何在 Go 中模拟导入函数以进行有效测试?

Linda Hamilton
Linda Hamilton原创
2024-12-25 03:55:17297浏览

How Can I Mock Imported Functions in Go for Effective Testing?

导入函数的部分模拟

在 Go 中,测试依赖于从外部包导入的函数的函数可能具有挑战性。考虑以下示例:

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}

我们可以在 Go 中模拟 z.SomeFunc() 吗?

重构模拟

,带有简单的代码修改。通过引入函数类型变量 zSomeFunc 并使用 z.SomeFunc 对其进行初始化,包代码可以调用该变量而不是 z.SomeFunc()。这允许我们在测试期间模拟导入的函数。

var zSomeFunc = z.SomeFunc

func abc() {
    ...
    v := zSomeFunc()
    ...
}

测试中的模拟

在测试中,我们可以为 zSomeFunc 分配一个自定义函数,该函数的行为符合测试需要。

func TestAbc(t *testing.T) {
    // Save current function and restore at the end:
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}

通过重构代码,我们可以模拟导入的函数并更有效地测试它们对我们代码的影响。在测试第三方依赖项或隔离特定功能以进行目标测试时,此技术特别有用。

以上是如何在 Go 中模拟导入函数以进行有效测试?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn