WireMock.Net für C# (.NET): Vollständiges Tutorial & Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

WireMock.Net für C# (.NET): Das vollständige Handbuch

1. Was ist WireMock.Net und warum wird es benötigt?

WireMock.Net ist eine leistungsstarke Bibliothek zum Erstellen von HTTP-Mock-Servern (Stubs) im .NET-Ökosystem. Es handelt sich um eine direkte C#-Implementierung des beliebten Java-Projekts WireMock. Die Hauptaufgabe der Bibliothek besteht darin, das Verhalten echter HTTP/HTTPS-Dienste (REST API, SOAP, gRPC usw.) während des Testens oder der Entwicklung zu emulieren.

Warum ist das notwendig? In der modernen Microservice-Architektur ist Ihre Anwendung oft von Dutzenden externer APIs abhängig. Die Verwendung echter Dienste in Unit- oder Integrationstests führt zu einer Reihe von Problemen: Testinstabilität aufgrund von Serverausfällen, langsame Ausführung, finanzielle Kosten für den Aufruf kostenpflichtiger APIs und die Unmöglichkeit, seltene Szenarien (z. B. einen 500-Fehler oder Timeout) zu testen. WireMock.Net löst diese Probleme, indem es Ihnen ermöglicht, den externen Dienst lokal zu „ersetzen".

Wichtige Anwendungsszenarien: Unit-Tests von HTTP-Clients (HttpClient), Integrationstests von Webanwendungen, „Offline"-Entwicklung (wenn das Backend noch nicht fertig ist), Testen der Fehler- und Timeout-Behandlung sowie die Erstellung isolierter Testumgebungen (Sandbox).

2. Installation

Die Bibliothek wird über NuGet vertrieben. Verwenden Sie einen der folgenden Befehle zur Installation:

Über die .NET CLI (empfohlen):

dotnet add package WireMock.Net

Über die Package Manager Console (Visual Studio):

Install-Package WireMock.Net

Für asynchrone Tests und Fluent Assertions (optional, aber nützlich):

dotnet add package WireMock.Net.FluentAssertions

Hinweis: Im Gegensatz zu Python (pip) oder Node.js (npm) verwendet .NET den Paketmanager NuGet.

3. Schnellstart – Minimales funktionsfähiges Beispiel

Erstellen Sie eine Konsolenanwendung oder ein Testprojekt (xUnit/NUnit). Nachfolgend finden Sie den minimalen Code, der einen Mock-Server auf Port 9876 startet und auf eine GET-Anfrage eine JSON-Antwort zurückgibt.

using WireMock.Server;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;

// 1. Server starten (standardmäßig auf einem zufälligen Port, wir geben aber einen bestimmten an)
var server = WireMockServer.Start(9876);

// 2. Stub konfigurieren
server.Given(
    Request.Create()
        .WithPath("/api/users/1")
        .UsingGet()
)
.RespondWith(
    Response.Create()
        .WithStatusCode(200)
        .WithHeader("Content-Type", "application/json")
        .WithBody("{ \"id\": 1, \"name\": \"John Doe\" }")
);

Console.WriteLine($"Mock-Server läuft auf {server.Urls[0]}");
Console.WriteLine("Drücken Sie eine beliebige Taste zum Beenden...");
Console.ReadKey();

// 3. Server stoppen
server.Stop();

Öffnen Sie nach dem Start einen Browser oder verwenden Sie curl: curl http://localhost:9876/api/users/1. Sie erhalten eine JSON-Antwort.

4. Wichtige Methoden/Funktionen/Klassen

4.1. WireMockServer.Start()

Signatur: public static WireMockServer Start(int? port = null, bool ssl = false)

Beschreibung: Eine statische Methode, die eine Instanz des Mock-Servers erstellt und startet. Wenn kein Port angegeben wird, wird ein zufälliger freier Port ausgewählt.

// Start auf Port 5000
var server = WireMockServer.Start(5000);

// Start auf einem zufälligen Port
var serverRandom = WireMockServer.Start();

4.2. server.Given()

Signatur: public IRespondWithAwareResponseBuilder Giv

Empfehlungen