MoqExt 1.0.2
dotnet add package MoqExt --version 1.0.2
NuGet\Install-Package MoqExt -Version 1.0.2
<PackageReference Include="MoqExt" Version="1.0.2" />
<PackageVersion Include="MoqExt" Version="1.0.2" />
<PackageReference Include="MoqExt" />
paket add MoqExt --version 1.0.2
#r "nuget: MoqExt, 1.0.2"
#:package MoqExt@1.0.2
#addin nuget:?package=MoqExt&version=1.0.2
#tool nuget:?package=MoqExt&version=1.0.2
MockingContext Usage Guide
Introduction
The MockingContext
class in the MoqExt
namespace serves as an IServiceProvider
implementation for .NET. It's designed to instantiate services on-demand and also provide mocked instances for services that can't be concretized.
Installation
First, install the NuGet package:
dotnet add package MoqExt
Basic Usage
Initialize MockingContext
with or without an existing IServiceCollection
.
// Without IServiceCollection
var mockingContext = new MoqExt.MockingContext();
// With IServiceCollection
IServiceCollection services = new ServiceCollection();
var mockingContext = new MoqExt.MockingContext(services);
Retrieve Services
Use GetService
to retrieve an instance of the required service type.
var myService = (MyService)mockingContext.GetService(typeof(MyService));
If MyService
is not registered, MockingContext
will return a mocked instance.
Retrieve Mocks
To retrieve a mock for setup, pass the mock type.
var myServiceMock = (Mock<MyService>)mockingContext.GetService(typeof(Mock<MyService>));
Advanced Features
Handle Multiple Instances
If you've registered multiple services of the same type, MockingContext
will throw an InvalidOperationException
.
Enumerable Services
Pass an enumerable type to get multiple instances of a service.
var myServices = (List<MyService>)mockingContext.GetService(typeof(IEnumerable<MyService>));
Notes
- Value type constructor arguments in the service classes will use their default values.
- Ambiguity in the number of constructors for a service class will result in an
InvalidOperationException
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 was computed. 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 was computed. 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. |
-
net6.0
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Moq (>= 4.20.69)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.