NetMediate.Moq Recipes
Install
<PackageReference Include="NetMediate.Moq" Version="x.x.x" />
Replace a service with a singleton mock
var services = new ServiceCollection();
services.AddSingleton<IClock, SystemClock>();
var clockMock = services.AddMockSingleton<IClock>();
clockMock.Setup(x => x.UtcNow).Returns(DateTime.UnixEpoch);
Create a mock without registering it
var strict = Mocking.Strict<IMyService>(); // MockBehavior.Strict
var loose = Mocking.Loose<IMyService>(); // MockBehavior.Loose
var def = Mocking.Create<IMyService>(); // MockBehavior.Default
Async setup helpers
var mock = Mocking.Strict<IMyCommandHandler>();
// Returns Task.CompletedTask
mock.Setup(x => x.Execute()).ReturnsCompletedTask();
// Returns Task<TResult>
mock.Setup(x => x.Get()).ReturnsTaskResult("ok");
// Also available as ReturnsTask (alias)
mock.Setup(x => x.Get()).ReturnsTask("ok");
Register a mediator mock quickly
var services = new ServiceCollection();
var mediatorMock = services.AddMediatorMock();
mediatorMock
.Setup(m => m.Send(It.IsAny<MyCommand>(), It.IsAny<CancellationToken>()))
.ReturnsCompletedTask();
Replace an existing registration with a mock
// AddMockSingleton removes all existing registrations for the service type
// before adding the mock, so it is safe to call even if the service was already registered.
var mock = services.AddMockSingleton<IMyService>(MockBehavior.Strict);