WireMock.Net is a free, open source api development & testing project written in C# and released under Apache-2.0. It has 1,682 GitHub stars, 239 forks and 21 open issues, and was last pushed 40 hours ago. On this registry it ranks #127 of 186 tracked projects in API Development & Testing, with 5 head-to-head comparisons available. It gained 5 stars over the last 30 tracked days.

What is WireMock.Net?

What it is

WireMock.Net is an open-source C# .NET library and mock server for stubbing and mocking web HTTP responses. It lives in the .NET ecosystem and is a developer tool for API development and testing. The project is based on mock4net and mimics functionality from the original Java-based WireMock, while providing extended and different functionality. Documentation is available at wiremock.org/dotnet.

The concrete problem it solves is the need to replace real HTTP dependencies during development, testing, and demonstration. Instead of calling a live backend, a developer can run a controllable server that matches requests by URL, path, headers, cookies, or body content patterns and returns configured responses. This supports testing client code, integration flows, and CI/CD pipelines without depending on external services.

Key capabilities

  • It stubs HTTP responses and matches requests by URL, path, headers, cookies, and body content patterns.
  • It can be used as a library in unit tests and integration tests, or run as a standalone process, Windows service, Azure/IIS deployment, or Docker container.
  • It is configurable through a fluent C# .NET API, JSON files, and JSON over HTTP.
  • It supports record and playback of stubs through proxying, including per-request conditional proxying.
  • It supports stateful behavior simulation and response templating using Handlebars and extensions.
  • It supports GraphQL, gRPC and ProtoBuf, OpenAPI, OpenTelemetry, WebSockets, and .NET Aspire distributed application testing.

Who uses it and how

  • .NET developers use it to mock HTTP dependencies in unit tests and integration tests, so tests run without external services.
  • Teams use it in CI/CD pipelines to provide predictable HTTP responses for automated builds and tests.
  • Developers run it locally as a standalone server or inside Docker to inspect request matching and response behavior during API development.
  • Teams use proxying to record responses from a real service and replay them later as stubs.
  • Aspire users use it to test distributed applications by supplying mocked or stubbed endpoints.

Getting started

Install the official WireMock.Net NuGet package, or use a MyGet preview package for newer builds. Run it as a library, standalone process, Windows service, Azure/IIS deployment, or Docker container.

When to use it — and when not to

Use WireMock.Net when you need an Apache-2.0 licensed HTTP mock server in the .NET ecosystem, especially for unit tests, integration tests, CI/CD pipelines, Docker workflows, or .NET Aspire testing. It is a fit for request matching, response templating, proxying, and support for GraphQL, gRPC, OpenAPI, OpenTelemetry, and WebSockets. Because it is based on Java WireMock but has extended and different functionality, teams expecting an exact replacement should verify behavior against the documentation, especially since the provided facts do not mention a hosted service, database, storage, or SMTP requirements, so deployment complexity depends on the chosen runtime.

project readme (upstream, from github) — read inline

Project Icon WireMock.Net

A C# .NET version based on mock4net which mimics functionality from the original Java based WireMock.


:books: Full documentation can now be found at wiremock.org


:star: Key Features

  • HTTP response stubbing, matchable on URL/Path, headers, cookies and body content patterns
  • Library can be used in unit tests and integration tests
  • Runs as a standalone process, as windows service, as Azure/IIS or as docker
  • Configurable via a fluent C# .NET API, JSON files and JSON over HTTP
  • Record/playback of stubs (proxying)
  • Per-request conditional proxying
  • Stateful behaviour simulation
  • Response templating / transformation using Handlebars and extensions
  • Can be used locally or in CI/CD scenarios
  • Can be used for Aspire Distributed Application testing
  • GraphQL support
  • gRPC / ProtoBuf support
  • OpenAPI support
  • OpenTelemetry support
  • WebSockets support

:memo: Blogs

:computer: Project Info

Project  
  Chat Slack Gitter
  Issues GitHub issues
Quality  
  Build Azure Build Status Azure
  Build GitHub Run Tests
  Quality Sonar Quality Gate CodeFactor
  SonarQube Sonar Bugs Sonar Code Smells
  Coverage Sonar Coverage codecov
  TIOBE TIOBE Quality Indicator

:package: NuGet packages

Official Preview :information_source:
  WireMock.Net NuGet Badge WireMock.Net MyGet Badge WireMock.Net
  WireMock.Net.Minimal 🔺 NuGet Badge WireMock.Net.Minimal MyGet Badge WireMock.Net
  WireMock.Net.StandAlone NuGet Badge WireMock.Net MyGet Badge WireMock.Net.StandAlone
  WireMock.Net.Testcontainers NuGet Badge WireMock.Net.Testcontainers MyGet Badge WireMock.Net.Testcontainers
  WireMock.Net.Aspire NuGet Badge WireMock.Net.Aspire MyGet Badge WireMock.Net.Aspire
  WireMock.Net.AspNetCore.Middleware NuGet Badge WireMock.Net.AspNetCore.Middleware MyGet Badge WireMock.Net.AspNetCore.Middleware
  WireMock.Net.AwesomeAssertions NuGet Badge WireMock.Net.AwesomeAssertions MyGet Badge WireMock.Net.AwesomeAssertions
  WireMock.Net.FluentAssertions NuGet Badge WireMock.Net.FluentAssertions MyGet Badge WireMock.Net.FluentAssertions
  WireMock.Net.xUnit NuGet Badge WireMock.Net.xUnit MyGet Badge WireMock.Net.xUnit
  WireMock.Net.xUnit.v3 NuGet Badge WireMock.Net.xUnit MyGet Badge WireMock.Net.xUnit
  WireMock.Net.TUnit NuGet Badge WireMock.Net.TUnit MyGet Badge WireMock.Net.TUnit
  WireMock.Net.NUnit NuGet Badge WireMock.Net.NUnit MyGet Badge WireMock.Net.TUnit
  WireMock.Net.Extensions.Routing NuGet Badge WireMock.Net.Extensions.Routing MyGet Badge WireMock.Net.Extensions.Routing
  WireMock.Net.Matchers.CSharpCode NuGet Badge WireMock.Net.Matchers.CSharpCode MyGet Badge WireMock.Net.Matchers.CSharpCode
  WireMock.Net.Matchers.SystemTextJsonPath NuGet Badge WireMock.Net.Matchers.SystemTextJsonPath MyGet Badge WireMock.Net.Matchers.SystemTextJsonPath
  WireMock.Net.OpenApiParser NuGet Badge WireMock.Net.OpenApiParser MyGet Badge WireMock.Net.OpenApiParser
  WireMock.Net.MimePart NuGet Badge WireMock.Net.MimePart MyGet Badge WireMock.Net.MimePart
  WireMock.Net.GraphQL NuGet Badge WireMock.Net.GraphQL MyGet Badge WireMock.Net.GraphQL
  WireMock.Net.ProtoBuf NuGet Badge WireMock.Net.ProtoBuf MyGet Badge WireMock.Net.ProtoBuf
  WireMock.Net.OpenTelemetry NuGet Badge WireMock.Net.OpenTelemetry MyGet Badge WireMock.Net.OpenTelemetry
  WireMock.Net.RestClient NuGet Badge WireMock.Net.RestClient MyGet Badge WireMock.Net.RestClient
  WireMock.Net.RestClient.AwesomeAssertions NuGet Badge WireMock.Net.RestClient.AwesomeAssertions MyGet Badge WireMock.Net.RestClient.AwesomeAssertions
  WireMock.Org.RestClient NuGet Badge WireMock.Org.RestClient MyGet Badge WireMock.Org.RestClient

🔺 WireMock.Net.Minimal does not include WireMock.Net.MimePart, WireMock.Net.GraphQL, WireMock.Net.ProtoBuf, WireMock.Net.OpenTelemetry and WireMock.Net.Matchers.SystemTextJsonPath.


:exclamation: Breaking changes

1.7.0

A breaking change is introduced which is related to System.Linq.Dynamic.Core DynamicLinq (CVE).

1.8.0

Some breaking changes are introduced in this version:

Handlebars.Net File-helper

By default, the internal Handlebars.Net File-helper is not allowed anymore because of potential security issues. To still enable this feature, you need to set the AllowedCustomHandlebarHelpers property to File in the HandlebarsSettings property in WireMockServerSettings.

Handlebars.Net Environment-helper

By default, the Handlebars.Net Environment-helper is not automatically allowed anymore because of potential security issues. To still enable this feature, you need to add the Environment category to the AllowedHandlebarsHelpers list-property in the HandlebarsSettings property in WireMockServerSettings.


:memo: Development

For the supported frameworks and build information, see this page.

:star: Stubbing

A core feature of WireMock.Net is the ability to return predefined HTTP responses for requests matching criteria. See Stubbing.

:star: Request Matching

WireMock.Net support advanced request-matching logic, see Request Matching.

:star: Response Templating

The response which is returned WireMock.Net can be changed using templating. This is described here Response Templating.

:star: Admin API Reference

The WireMock admin API provides functionality to define the mappings via a http interface see Admin API Reference.

:star: Using

WireMock.Net can be used in several ways:

UnitTesting

You can use your favorite test framework and use WireMock within your tests, see UnitTesting.

Unit/Integration Testing using Testcontainers.DotNet

See WireMock.Net.Testcontainers on how to build a WireMock.Net Docker container which can be used in Unit/Integration testing.

Unit/Integration Testing using an an Aspire Distributed Application

See WireMock.Net.Aspire on how to use WireMock.Net as an Aspire Hosted application to do Unit/Integration testing.

As a dotnet tool

It's simple to install WireMock.Net as (global) dotnet tool, see dotnet tool.

As standalone process / console application

This is quite straight forward to launch a mock server within a console application, see Standalone Process.

As a Windows Service

You can also run WireMock.Net as a Windows Service, follow this Windows Service.

As a Web Job in Azure or application in IIS

See this link WireMock-as-a-(Azure)-Web-App

In a docker container

There is also a Linux and Windows-Nano container available at hub.docker.com. For more details see also Docker.

HTTPS / SSL

More details on using HTTPS (SSL) can be found here HTTPS

:books: Documentation

For more info, see also this documentation page: What is WireMock.Net.


Powered by

JetBrains logo.

Frequently asked questions

Is WireMock.Net free to use?

WireMock.Net is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does WireMock.Net do?

WireMock.Net is a flexible product for stubbing and mocking web HTTP responses using advanced request matching and response templating. Based on WireMock Java,

What is WireMock.Net written in?

WireMock.Net is primarily written in C#. Its source is publicly available at https://github.com/wiremock/WireMock.Net, and it has 1,682 GitHub stars.