gpt4 book ai didi

unit-testing - 包中的模拟方法

转载 作者:数据小太阳 更新时间:2023-10-29 03:34:45 25 4
gpt4 key购买 nike

我正在寻找模拟单元测试的一些方法。不幸的是,代码的结构不是很好。

var config = struct { abc *abc }

func Init(arg1) {
// config.abc = newAbc(arg2, arg3)
}

func UnitTestThis() {
//some code here

config.abc.Search(arg4,arg5)

//code here
}

如何对 UnitTestThis 函数进行单元测试,模拟 Search 方法的结果?我一直在尝试创建一个接口(interface)并模拟这些方法,但未能成功。

最佳答案

如果 config.abc 字段是具体类型(或指向具体类型的指针),则无法真正模拟它。

你需要一些重构。

有接口(interface)

最好将 config.abc 的类型更改为接口(interface)类型,这样在测试中您可以创建自己的实现并分配给它,您可以在其中做任何您想做的事情。

config.abc.Search 上使用方法值

另一种选择是创建一个函数类型的变量来保存 method value config.abc.Search(),并在测试中为其分配一个新值,function literal例如。

它可能是这样的:

var config = struct{ abc *abc }{}

var searchFunc func(arg4Type, arg5Type)

func Init(arg1) {
config.abc = newAbc(arg2,arg3)
searchFunc = config.abc.Search
}

func UnitTestThis() {
//some code here
searchFunc(arg4, arg5)
//code here
}

在这里阅读更多相关信息:Is it possible to mock a function imported from a package in golang?

关于unit-testing - 包中的模拟方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com