Rust in Everything
基于 tower 0.5.3

测试

中间件的行为大多和时机有关:内层什么时候就绪、响应什么时候回来、poll_ready 在哪一步返回 Pending。用真实服务很难把这些时机固定下来。tower-test 只有 500 来行,提供一个 mock 服务,把这些时机交给测试代码手动控制。tower 仓库里 tower/tests/ 下有 12 个测试文件用到它,balance/p2c 的单元测试也用它。

  1. 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

💬 关联讨论

发起讨论
加载中...