Skip to content

Using WireMock in UnitTests

Stef Heyenrath edited this page Jan 29, 2017 · 11 revisions

WireMock with your favorite UnitTest framework

Obviously you can use your favourite test framework and use WireMock within your tests. In order to avoid flaky tests you should:

  • let WireMock choose dynamicaly ports. It might seem common sens, avoid hard coded ports in your tests!
  • clean up the request log or shutdown the server at the end of each test

Below a simple example using Nunit and NFluent test assertion library:

[SetUp]
public void StartMockServer()
{
    _server = FluentMockServer.Start();
}

[Test]
public async void Should_respond_to_request()
{
  // given
   _sut = new SomeComponentDoingHttpCalls();

  _server
    .Given(Request.Create().WithUrl("/foo").UsingGet())
    .RespondWith(
      Response.Create()
        .WithStatusCode(200)
        .WithBody(@"{ ""msg"": ""Hello world!"" }")
    );

  // when
  var response = _sut.DoSomething();
    
  // then
  Check.That(response).IsEqualTo(EXPECTED_RESULT);
    
  // and optionnaly
  Check.That(_server.SearchLogsFor(Request.WithUrl("/error*")).IsEmpty();
}

[TearDown]
public void ShutdownServer()
{
    _server.Stop();
}
Clone this wiki locally