猿问

如何模拟单元测试的外部方法

我想模拟在 Go 中进行测试的方法。我无法弄清楚模拟通常遵循的任何步骤/模式。


考虑下面的代码并帮助我理解。


包 fetchClient


客户端.go


type Client struct {

    URL     string

}


type ClientData struct {

    ID      string       

}


func (p *Client) GetURL(ID string) (*ClientData) {

    data := &ClientData{}

    //Some work to store client information into data struct and return it 

    return data

}

包 fetchClientData


FetchData.go


// Function GetData that accepts a client ID as argument and returns client URL

func GetData(ID string) (*fetchClient.Client.URL) {

    param := (*Client).GetURL(ID) 

    return param

}

FetchData_test.go //想知道如何按照下面的问题进行模拟。


问题:如何在 FetchData_test.go 文件中模拟一个虚假的 GetURL 函数,使其不调用 FetchData.go 文件中的实际 GetURL 函数,而是模拟它。


慕森卡
浏览 104回答 1
1回答

慕沐林林

可能有两种方法可以解决您的问题。我只能根据您发布的代码非常少做一些假设。但是您要么必须创建通过 http 测试实现函数的模拟库,要么可以将函数调用迁移到要使用/消费的接口中,以便您可以在 GoMock 中使用 MockGen 功能。后者可能会更干净,更接近 Go Best Practices。查看他们的文档。 https://github.com/golang/mock
随时随地看视频慕课网APP

相关分类

Go
我要回答