小编use*_*874的帖子

.net core 集成测试中的模拟类型 HttpClient

我正在寻找一些在 Asp.net core 应用程序的集成测试中模拟 Typed HttpClient 的想法。

假设我有一个带有注册的 Typed HttpClient 的服务集合,如下所示

var serviceCollection = new ServiceCollection();

serviceCollection.AddHttpClient<ITestApiClient, TestApiClient>();

var services = serviceCollection.BuildServiceProvider();
Run Code Online (Sandbox Code Playgroud)

TestApiClient这样的定义

public class TestApiClient: ITestApiClient
{
    HttpClient _httpClient;
    public TestApiClient(HttpClient httpClient)
    {
        _httpClient = httpClient;
    }

    public void MakeTestApiCall()
    {
        var response = _httpClient.GetAsync("https://reqres.in/api/users?page=2");
        response.Result.Content.ReadAsStringAsync().Result.Dump();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法,将模拟HttpClient实现注入到TestApiClient使用 ServiceCollection 中,而无需直接实例化TestApiClient

类似于我们在下面的集成测试中如何用模拟的 Foo 实现替换真实的 Foo 实现。

var fooMock = new Mock<IFoo>();
services.AddSingleton(fooMock);
Run Code Online (Sandbox Code Playgroud)

请注意,我已经找到了一种使用 Moq 和RichardSzalay.MockHttp. 我的问题是如何替换 ServiceCollection 中类型化的 Httpclient(模拟 …

c# asp.net-core

5
推荐指数
1
解决办法
1776
查看次数

标签 统计

asp.net-core ×1

c# ×1