You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Actix Web请求处理器测试Mock/创建ReqData?

Actix-web 测试中传入 web::ReqData 的方法

web::ReqData 本身提供了 new 构造函数,测试时可以直接用它包裹测试数据,和构造 web::Data 的方式类似,直接传入处理器即可。

修改后的测试代码示例:

pub async fn handler(
    some_data: web::Data<SomeDataType>,
    req_data: web::ReqData<RequestDataType>
) -> HttpResponse {
    // 业务逻辑代码
}

#[actix_rt::test]
async fn test_fn() {
    // 初始化测试用的 SomeDataType 实例
    let test_some_data = web::Data::new(SomeDataType {
        // 填充测试数据
    });
    // 初始化测试用的 RequestDataType 实例,并用 ReqData 包裹
    let test_req_data = web::ReqData::new(RequestDataType {
        // 填充测试数据
    });

    let resp = handler(test_some_data, test_req_data).await;
    assert_eq!(resp.status(), StatusCode::OK);
}

注意事项

  • ReqData 要求内部数据具备 'static 生命周期,所以测试数据需要满足这个条件——可以使用静态常量,或者堆分配的类型(比如 Box 包裹、本身是 'static 的结构体)。
  • 如果你的 RequestDataType 实现了 Clone,也可以通过 ReqData::clone 复制已有实例,但测试场景下直接构造新实例更直观。

内容的提问来源于stack exchange,提问作者Marcus Ruddick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:39:53