Heim > Backend-Entwicklung > C++ > Wie kann man HttpClient für effektive Unit-Tests verspotten?

Wie kann man HttpClient für effektive Unit-Tests verspotten?

Susan Sarandon
Freigeben: 2025-01-13 13:46:43
Original
368 Leute haben es durchsucht

How to Mock HttpClient for Effective Unit Testing?

Mock HttpClient in Unit-Tests

Bei Unit-Tests ist es üblich, externe Abhängigkeiten zu simulieren, um das Verhalten des Zielcodes zu isolieren. Mock HttpClient ermöglicht das Testen von Code, der auf HTTP-Anfragen basiert, ohne tatsächliche Netzwerkaufrufe durchzuführen.

Stellen Sie sich das folgende Szenario vor:

<code class="language-csharp">public interface IHttpHandler
{
    HttpClient Client { get; }
}

public class HttpHandler : IHttpHandler
{
    public HttpClient Client => new HttpClient();
}

public class Connection
{
    private readonly IHttpHandler _httpClient;

    public Connection(IHttpHandler httpClient)
    {
        _httpClient = httpClient;
    }

    public void DoSomething() { /* 使用 _httpClient.Client 进行 HTTP 调用 */ }
}</code>
Nach dem Login kopieren

In einem Unit-Test-Projekt möchten Sie möglicherweise den HttpClient verspotten, um Netzwerkaufrufe zu vermeiden und sich auf das Testen der Logik der Connection-Klasse zu konzentrieren.

<code class="language-csharp">private IHttpHandler _httpClient;

[TestMethod]
public void TestMockConnection()
{
    //此处需要创建 HttpClient 的模拟实例,而不是真实的实例
    var connection = new Connection(_httpClient);
    connection.DoSomething();
}</code>
Nach dem Login kopieren

Zu diesem Zweck können Sie die Abhängigkeitsinjektion verwenden, um einen simulierten HttpClient einzuschleusen. Die Erweiterbarkeit von HttpClient liegt im HttpMessageHandler, der an den Konstruktor übergeben wird. Sie können in Ihrem Komponententest einen simulierten HttpMessageHandler erstellen und ihn an den HttpClient-Konstruktor übergeben.

<code class="language-csharp">[TestMethod]
public void TestMockConnection()
{
    var mockHttp = new MockHttpMessageHandler(); // 创建一个模拟 HttpMessageHandler

    var httpClient = new HttpClient(mockHttp); // 将模拟 HttpMessageHandler 传递给 HttpClient 构造函数

    var connection = new Connection(new HttpHandler { Client = httpClient }); // 将模拟 HttpClient 注入 Connection 类

    connection.DoSomething();

    // 通过对模拟 HttpMessageHandler 设置期望来验证是否进行了预期的 HTTP 请求。
}</code>
Nach dem Login kopieren

Durch die Verwendung der Abhängigkeitsinjektion und das Verspotten des HttpMessageHandlers können Sie den zu testenden Code effektiv isolieren und sein Verhalten überprüfen, ohne tatsächliche Netzwerkaufrufe durchzuführen.

Das obige ist der detaillierte Inhalt vonWie kann man HttpClient für effektive Unit-Tests verspotten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage