如何模拟单元测试的外部方法
How to mock external methods for unit testing
我想在 Go 中模拟测试方法。我无法弄清楚通常被用来模拟的任何 steps/pattern。
考虑下面的代码并帮助我理解。
包fetchClient
client.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 函数,使其不调用实际的 GetURL 函数在 FetchData.go 文件中,而不是模拟它。
可能有两种方法可以解决您的问题。我只能根据您发布的代码做出一些假设,这些代码非常少。但是你要么必须创建通过 http 测试实现你的功能的模拟库,要么你可以将你的函数调用迁移到一个接口中 used/consumed 以便你可以在 GoMock 中使用 MockGen 功能。后者可能会更清晰,更接近 Go 最佳实践。
查看他们的文档。 https://github.com/golang/mock
我想在 Go 中模拟测试方法。我无法弄清楚通常被用来模拟的任何 steps/pattern。
考虑下面的代码并帮助我理解。
包fetchClient
client.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 函数,使其不调用实际的 GetURL 函数在 FetchData.go 文件中,而不是模拟它。
可能有两种方法可以解决您的问题。我只能根据您发布的代码做出一些假设,这些代码非常少。但是你要么必须创建通过 http 测试实现你的功能的模拟库,要么你可以将你的函数调用迁移到一个接口中 used/consumed 以便你可以在 GoMock 中使用 MockGen 功能。后者可能会更清晰,更接近 Go 最佳实践。
查看他们的文档。 https://github.com/golang/mock