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

单元测试中Mock RestResponse未触发RestSharp的AdvancedResponseWriter如何解决?

问题原因

AdvancedResponseWriter 是 RestSharp 原生执行请求的逻辑中,拿到服务端响应流后主动调用的委托,你当前的 Mock 逻辑仅直接返回构造好的 RestResponse 对象,没有处理请求对象中挂载的 AdvancedResponseWriter 委托,因此不会触发执行。

解决方案

修改 Mock 的 Setup 逻辑,捕获传入的请求对象,在返回响应前手动调用挂载的 AdvancedResponseWriter:

mock
    .Setup(m => m.ExecuteAsync(It.IsAny<RestRequest>(), It.IsAny<CancellationToken>()))
    .ReturnsAsync((RestRequest req, CancellationToken ct) => 
    {
        var response = new RestResponse 
        {
            Content = Guid.NewGuid().ToString(),
            StatusCode = HttpStatusCode.OK,
            RawBytes = Encoding.UTF8.GetBytes("gfgdfgdfgdfg")       
        };
        // 手动触发请求绑定的AdvancedResponseWriter
        if (req.AdvancedResponseWriter != null)
        {
            using var responseStream = new MemoryStream(response.RawBytes);
            req.AdvancedResponseWriter(responseStream, response);
        }
        return response;
    });

补充说明

如果你的代码中用到的是异步版本的 AdvancedResponseWriterAsync,只需要将调用逻辑改成对应的异步执行即可。

内容的提问来源于stack exchange,提问作者Michael Snytko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:18:03