WireMock.Net如何配置同一路由交替返回200正常响应和500错误响应
解决方案
WireMock.Net 原生支持动态响应逻辑,你可以通过传入响应生成委托的方式实现按需返回不同状态码和响应体,完整实现代码如下:
using System.Threading; using WireMock.RequestBuilders; using WireMock.ResponseBuilders; using WireMock.Server; // 初始化WireMock服务 var server = WireMockServer.Start(); // 定义线程安全的请求计数器 int requestCount = 0; server.Given(Request.Create().WithPath("/some/thing").UsingGet()) .RespondWith(req => { // 原子递增计数,避免多线程并发场景下计数不准 int currentCount = Interlocked.Increment(ref requestCount); // 偶数次请求返回200 if (currentCount % 2 == 0) { return Response.Create() .WithStatusCode(200) .WithBody("自定义正常响应内容"); } // 奇数次请求返回500 else { return Response.Create() .WithStatusCode(500) .WithBody("自定义500错误响应内容"); } });
补充说明
- 委托内可以任意扩展判断逻辑,如果你后续需要调整为按比例分配响应、或根据请求参数返回不同内容,都可以直接在这个委托里修改规则
- 如果需要在服务重启后重置计数,只需要重新初始化
requestCount变量即可
内容的提问来源于stack exchange,提问作者satellite satellite
相关产品推荐
相关产品推荐

