我对 Golang 很陌生,并且正在为函数编写单元测试(我正在使用stretchr testify 进行模拟)。但是,此函数调用同一类中的另一个函数。但是在对第一个函数进行单元测试时,我想模拟对第二个函数的调用,因为我不希望它真正调用第二个函数。这在 Java 中很容易,但我在 Go 中找不到任何有用的信息。这是我的函数的一些代码片段:
func (p *Prod) GetProducts(name string, request *prod.ProductRequest) (detail *prod.Department, err error) {
....
....
if err = p.getDetails(ctx, detail.Id); err != nil {
logger.Error(err)
return
}
...
...
}
func (p *Prod) GetDetails(name string, Id string) error {
....
....
}
正如您在此处看到的,GetProducts
是我尝试进行单元测试的函数,并且该函数调用GetDetails
. 我想模拟对GetDetails
. 这在 Go 中可能吗?我们通常会在 Go 中模拟此类函数调用吗?推荐吗?如果是,那么正确的方法是什么?
在我的测试中,我有:
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := &Prod{
...
ds: tt.fields.ds,
}
p.GetProducts("somestring", request)
})
}
这将调用函数 GetProducts。但是现在我不知道要进行哪些更改,因此可以模拟对 GetDetails 的调用。我将不胜感激这方面的任何帮助