Rust中httpmock单个Mock Server能否配置多路径请求响应规则?
答案
完全支持在单个Mock Server实例上配置多组独立的when-then请求匹配规则,不需要额外部署新的Mock Server实例。
你当前代码里存在一个命名容易造成误解的点:admin_server.mock(...)的返回值是单条mock规则的操作句柄,作用是后续做调用次数断言、手动删除规则等操作,它本身不是Mock Server实例,真正的服务实例是admin_server。你只需要在同一个admin_server实例上重复调用.mock()方法,就能新增多组请求-响应匹配规则。
可直接参考如下配置代码:
// 保留原有的/register路径匹配规则,变量名调整为规则句柄语义避免混淆 let register_mock = admin_server.mock(|when, then| { when.path("/register") .header("content-type", "application/json") .header_exists("content-type") .json_body_partial( r#" { "engineName": "engine_for_mock" } "#, ); then.status(200) .header("content-type", "application/json") .json_body(get_sample_register_response_body()); }); // 同个Mock Server实例上新增/poll路径的匹配规则 let poll_mock = admin_server.mock(|when, then| { when.path("/poll"); then.status(200) .header("content-type", "application/json") .json_body(get_sample_poll_response_body()); });
补充说明:
- 你配置的两组规则匹配路径分别为
/register和/poll,不存在匹配冲突,Mock Server收到请求后会自动命中对应规则返回预设响应,完全满足注册+定时轮询全流程的测试需求。 - 如果测试过程中需要验证两个接口是否被客户端正常调用,直接通过两个规则句柄调用断言方法即可,比如
register_mock.assert()、poll_mock.assert()可以分别校验对应请求是否按预期发起。
内容的提问来源于stack exchange,提问作者yjlee
相关产品推荐
相关产品推荐

