如何使用Go语言HttpMock库进行无网络依赖的Mock测试编写?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1012个文字,预计阅读时间需要5分钟。
由于测试要求快速、可重复、不依赖外部状态,以下是对伪原创内容的简化
因测试需快速、可重复、独立于环境,故采用http.Server。该结构易于端口冲突、泄露,故需注意。
- 真实服务启动慢,
net.Listen可能失败,server.Close()忘关会导致后续测试失败 - 一旦测试中调用
http.Get("https://api.example.com"),就已脱离可控范围 - 多数 HTTP client 库(包括标准库)都支持传入自定义
http.Transport,这才是 Mock 入口
用 httpmock 库拦截请求比手写 RoundTripper 更稳
httpmock 不是“启动 mock server”,而是注册一个假的 RoundTripper,在请求发出前就截住它。它对标准库透明,不需要改业务代码里的 http.Client 初始化逻辑——只要确保测试前启用、测试后清理即可。
本文共计1012个文字,预计阅读时间需要5分钟。
由于测试要求快速、可重复、不依赖外部状态,以下是对伪原创内容的简化
因测试需快速、可重复、独立于环境,故采用http.Server。该结构易于端口冲突、泄露,故需注意。
- 真实服务启动慢,
net.Listen可能失败,server.Close()忘关会导致后续测试失败 - 一旦测试中调用
http.Get("https://api.example.com"),就已脱离可控范围 - 多数 HTTP client 库(包括标准库)都支持传入自定义
http.Transport,这才是 Mock 入口
用 httpmock 库拦截请求比手写 RoundTripper 更稳
httpmock 不是“启动 mock server”,而是注册一个假的 RoundTripper,在请求发出前就截住它。它对标准库透明,不需要改业务代码里的 http.Client 初始化逻辑——只要确保测试前启用、测试后清理即可。

