Closed taoso closed 2 years ago
本项目的亮点是分协程独立打桩。但今天发现一个必须使用全局打桩的场景。
Go 标准 http 客户端在发起请求的时候会调用底层的 Dialer 创建连接。 但创建连接的过程是在另外一个独立的协程执行的。如果只允许协程内打桩, 那就无法通过 mock Dialer 来改变 http 客户端的行为。
一种方式是 mock 更为上导致的 RoundTrip 对象。http 客户端对该对象的 操作是在同一个协程完成的。但作为通用库还是支持全局打桩比较好。
这次顺便移除了 PatchInstanceMethod 函数,其功能完全可以由 Patch 实现。
本项目的亮点是分协程独立打桩。但今天发现一个必须使用全局打桩的场景。
Go 标准 http 客户端在发起请求的时候会调用底层的 Dialer 创建连接。 但创建连接的过程是在另外一个独立的协程执行的。如果只允许协程内打桩, 那就无法通过 mock Dialer 来改变 http 客户端的行为。
一种方式是 mock 更为上导致的 RoundTrip 对象。http 客户端对该对象的 操作是在同一个协程完成的。但作为通用库还是支持全局打桩比较好。
这次顺便移除了 PatchInstanceMethod 函数,其功能完全可以由 Patch 实现。