Mediarq.Testing
1.5.1
dotnet add package Mediarq.Testing --version 1.5.1
NuGet\Install-Package Mediarq.Testing -Version 1.5.1
<PackageReference Include="Mediarq.Testing" Version="1.5.1" />
<PackageVersion Include="Mediarq.Testing" Version="1.5.1" />
<PackageReference Include="Mediarq.Testing" />
paket add Mediarq.Testing --version 1.5.1
#r "nuget: Mediarq.Testing, 1.5.1"
#:package Mediarq.Testing@1.5.1
#addin nuget:?package=Mediarq.Testing&version=1.5.1
#tool nuget:?package=Mediarq.Testing&version=1.5.1
Mediarq.Testing
Test harness for Mediarq: a SpyMediator that records every dispatched request/notification while still
running them through the real pipeline (handlers, validators, behaviors — nothing is faked), plus
ready-to-use FakeClock/FakeUserContext.
dotnet add package Mediarq.Testing
Spying on dispatch
services.AddMediarq(isHttp: false, typeof(Program).Assembly); // your normal registration
services.AddMediarqSpy(); // decorates IMediator
var sender = provider.GetRequiredService<ISender>();
await sender.Send(new CreateOrder(customerId));
var spy = (SpyMediator)provider.GetRequiredService<IMediator>();
spy.HasSent<CreateOrder>().Should().BeTrue(); // any assertion library works
spy.Published<OrderCreated>().Should().ContainSingle();
AddMediarqSpy() decorates the already-registered IMediator — call it after
AddMediarq/AddMediarqCore. ISender and IPublisher are covered too: both already resolve the
current IMediator from the container, so every Send/Publish/CreateStream call is recorded no
matter which of the three interfaces the caller depends on.
In a smaller test, construct one directly instead of going through DI:
var spy = new SpyMediator(myRealOrFakeMediator);
await spy.Send(new CreateOrder(customerId));
spy.SentRequests.Should().ContainSingle();
FakeClock / FakeUserContext
var clock = new FakeClock { UtcNow = new DateTime(2026, 1, 1, 0, 0, 0, DateTimeKind.Utc) };
var user = new FakeUserContext { UserId = "u1", UserName = "alice", Roles = ["Admin"] };
services.AddSingleton<IClock>(clock);
services.AddScoped<IUserContext>(_ => user);
Both are plain settable implementations of IClock/IUserContext — register them in place of
SystemClock/HttpUserContext/DefaultUserContext in a test's IServiceCollection.
Learn more
Wiring extensions · Full README
MIT © Nicolas Rouffart
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Mediarq.Core (>= 1.5.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Scrutor (>= 6.1.0)
-
net8.0
- Mediarq.Core (>= 1.5.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Scrutor (>= 6.1.0)
-
net9.0
- Mediarq.Core (>= 1.5.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Scrutor (>= 6.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.