0

我对 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 的调用。我将不胜感激这方面的任何帮助

4

0 回答 0