我希望模拟一些单元测试方法。不幸的是,代码结构不是很好。
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函数进行单元测试,模拟搜索方法的结果?我一直在尝试创建一个界面并模拟方法,但是无法这样做。
答案 0 :(得分:1)
如果config.abc
字段是具体类型(或指向具体类型的指针),则无法模拟它。
你需要一些重构。
最好将config.abc
的类型更改为接口类型,因此在测试中,您可以创建自己的实现并分配给它,并且您可以在其中执行任何操作。
config.abc.Search
另一种选择是创建一个函数类型的变量来保存config.abc.Search()
的{{3}},并在测试中为其分配一个新值,例如method value。
这就是它的样子:
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
}
在此处详细了解:function literal