Developer Sessions

Introducing WireMock.Net:Master HTTP API Testing

WireMock.NET HTTP API behaviors, enabling seamless integration and testing for developers.

👌 Ideal Use Cases:

  • HTTP Dependencies Not Ready: Leap over the hurdle of incomplete HTTP APIs in microservice architectures by mimicking their behavior with WireMock.Net.
  • Unit Testing HTTP-Dependent Classes: Test classes that rely on HTTP APIs as a cohesive unit, ensuring your code communicates effectively with the actual APIs.
  • Integration/End-to-End Tests: Overcome the challenges of testing with external HTTP APIs—like variable data, slow responses, and network restrictions—by employing WireMock.Net for consistent and swift testing.
public class ExternalService(HttpClient httpClient)
{
    public async Task<string> GetAsync()
    {
        var response = await httpClient.GetAsync("/ping");
        response.EnsureSuccessStatusCode();
        
        return await response.Content.ReadAsStringAsync();
    }
}

public class ExternalServiceTests
{
    [Fact]
    public async Task GetAsync_WhenCalled_ReturnsString()
    {
        // Arrange
        var fakeServer = WireMockServer.Start();
        
        fakeServer
            .Given(Request.Create().WithPath("/ping").UsingGet())
            .RespondWith(Response.Create()
                .WithStatusCode(200)
                .WithBody("pong")
            );
        
        var fakeClient = fakeServer.CreateClient();
        var externalService = new ExternalService(fakeClient);
        
        // Act
        var response = await externalService.GetAsync();

        // Assert
        response.Should().Be("pong");
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button