对于 .Net Core 3.1 WebApi 项目,我想测试我的应用程序的完整管道,同时模拟外部调用(不是单元测试,完整测试)。此应用使用 Refit SDK 为外部调用注入 SDK。我希望能够在此测试中覆盖 SDK,以便到达所有代码,但根据请求的内容返回动态响应。当我使用richardszalay.mockhttp 进行测试时,如果它可以满足我的需要,我非常愿意切换嘲笑者。
我知道我可以根据请求中的值有不同的期望(我的示例中只有伪代码)。所以我能走到这一步。
不过,我需要的是,对于这个特定的工作流程,服务将在通过请求传入的响应中返回一个 ReferenceId 值。当基于请求中的 ReferenceId 字段时,关于如何在响应中动态创建 ReferenceId 字段有什么想法吗?这根本不可能吗?
using var mockHttp = new MockHttpMessageHandler();
var settings = new RefitSettings { HttpMessageHandlerFactory = () => mockHttp };
mockHttp.Expect(HttpMethod.Post, "https://api.github.com/junk/url/example").With(req => req.PaymentId == 4).Respond(resp => responseMessage);
var apiServiceMock = RestService.For<IRealTimePayment>("https://api.github.com", settings);
return await apiServiceMock.InitiatePaymentAsync(request: request, headers: null).ConfigureAwait(false);