MoqExt 1.0.2

dotnet add package MoqExt --version 1.0.2
                    
NuGet\Install-Package MoqExt -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MoqExt" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MoqExt" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="MoqExt" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MoqExt --version 1.0.2
                    
#r "nuget: MoqExt, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MoqExt@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MoqExt&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=MoqExt&version=1.0.2
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 33,076 9/30/2023
1.0.1 160 9/30/2023
1.0.0 185 9/30/2023