3.78模拟请求响应与异常(Mock)

创建于 2026 年 8 月 17 日约 2 分钟读完

MockResponseMockException 专为单元测试设计,可在不实际发送 HTTP 请求的情况下,直接返回预设响应或抛出预设异常,对业务代码零侵入。

cs
// 模拟 JSON 响应(自动序列化)HttpRequestBuilder.Get("https://api.furion.net/weather")    .MockResponse(new { Temperature = 25, Condition = "Sunny" });// 模拟自定义状态码和内容类型HttpRequestBuilder.Post("https://api.furion.net/upload")    .MockResponse(new { Id = 123 }, HttpStatusCode.Created, "application/json");// 模拟完整的 HttpResponseMessage(适用于文件流等复杂场景)var content = new StreamContent(File.OpenRead("test.pdf"));content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = content };HttpRequestBuilder.Get("https://example.com/download")    .MockResponse(response);// 模拟异常(超时、网络中断等)HttpRequestBuilder.Get("https://api.furion.net/data")    .MockException(new HttpRequestException("Connection timed out"));// 清除所有模拟设置HttpRequestBuilder.Get("https://api.furion.net/data")    .MockResponse(new { })    .ClearMock();   // 清除后请求将正常发送

该功能与 HttpRemoteService 结合使用时,可完全替代真实网络请求,极大提升单元测试的隔离性和执行速度。