如何正确模拟使用结构体指针接收器的函数?

问题描述 投票:0回答:1

想象我有一个

Client
结构来保存一些依赖项

type Client struct {
   httpClient *http.Client
   config *Config
}

我有一个函数,它使用指向该结构的指针接收器并执行 http 调用

func (client *Client) Get() (*Response, error) {
  ...
  client.httpClient.get(url)
}

我的难题是,我觉得我无法模拟那些没有作为参数传递给函数的东西,而是通过 *Client 指针接收器访问来传递的东西。

能够模拟底层 httpClient 输出的最佳方法是什么?

尝试使用接口,但我对嵌入式依赖项有点困惑

go testing mocking
1个回答
0
投票

能够模拟底层 httpClient 输出的最佳方法是什么?

完全不要嘲笑它。使用正确的 net/http.Client 并进行实际 HTTP 调用。

使用测试服务器作为目标,例如使用 net/http/httptest.NewServer 启动一个并使用提供合适测试响应的假处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.