测试
中间件的行为大多和时机有关:内层什么时候就绪、响应什么时候回来、poll_ready 在哪一步返回 Pending。用真实服务很难把这些时机固定下来。tower-test 只有 500 来行,提供一个 mock 服务,把这些时机交给测试代码手动控制。tower 仓库里 tower/tests/ 下有 12 个测试文件用到它,balance/p2c 的单元测试也用它。
- tower-test:
mock::pair给出Mock和Handle;Handle::allow控制poll_ready放行,next_request取请求,SendResponse回答;没就绪就call会 panic;spawn_layer和assert_request_eq!用来单测一个 Layer。仓库 tag 里是 0.4.1,crates.io 上能用的是 0.4.0,行为相同。
flowchart TB t[测试代码] -->|poll_ready 与 call| mw[被测中间件] mw --> m[Mock] m -->|请求| h[Handle] t -->|allow、取请求、回答| h
💬 关联讨论
发起讨论加载中...