Moq.EntityFrameworkCore 6.0.1.4

.NET 6.0
dotnet add package Moq.EntityFrameworkCore --version 6.0.1.4
NuGet\Install-Package Moq.EntityFrameworkCore -Version 6.0.1.4
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="Moq.EntityFrameworkCore" Version="6.0.1.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Moq.EntityFrameworkCore --version 6.0.1.4
#r "nuget: Moq.EntityFrameworkCore, 6.0.1.4"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Moq.EntityFrameworkCore as a Cake Addin
#addin nuget:?package=Moq.EntityFrameworkCore&version=6.0.1.4

// Install Moq.EntityFrameworkCore as a Cake Tool
#tool nuget:?package=Moq.EntityFrameworkCore&version=6.0.1.4

Moq.EntityFrameworkCore

Build Status Downloads

This library helps you mocking EntityFramework contexts. Now you will be able to test methods that are using DbSet<TEntity> or DbQuery<TEntity> from DbContext in an effective way.

Installation - NuGet Packages

Install-Package Moq.EntityFrameworkCore

Usage

For example we can assume that we have the following production code:

public class UsersContext : DbContext
{
    public virtual DbSet<User> Users { get; set; }
}

To mock Users and Roles you only need to implement the following 3 steps:

1. Create DbContext mock:

var userContextMock = new Mock<UsersContext>();

2. Generate your entities:

IList<User> users = ...;

3. Setup DbSet or DbQuery property:

userContextMock.Setup(x => x.Users).ReturnsDbSet(users);

or

userContextMock.SetupGet(x => x.Users).ReturnsDbSet(users);

or

userContextMock.SetupSequence(x => x.Set<User>())
  .ReturnsDbSet(new List<User>())
  .ReturnsDbSet(users);

And this is all. You can use your DbContext in your tests.

The second option is mocking DbSet that is part of the interface:

public interface IBlogContext
{
   DbSet<Post> Posts { get; }
}

And then use:

var posts = new List<Post>();
var contextMock = new Mock<IBlogContext>();
contextMock.Setup(p => p.Posts).ReturnsDbSet(posts);

You will find examples of this library in the repository.

Product Versions
.NET net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Moq.EntityFrameworkCore:

Package Downloads
Devocean.Tests

Devocean.Tests is a set of base classes and helpers inteded to support implementing integration and unit tests on projects based on Devocean.Core

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
6.0.1.4 198,768 5/29/2022
6.0.1.3 3,461 5/29/2022
6.0.1.2 244,830 1/25/2022
6.0.0.6 473 1/25/2022
5.0.0.2 354,815 3/12/2021
5.0.0.1 79,956 11/29/2020
3.1.2.13 158,425 11/29/2020
3.1.2.6 144,206 6/29/2020
3.1.2.1 71,547 2/26/2020
3.0.0.10 36,224 11/9/2019
3.0.0.4 6,965 10/6/2019
2.2.1.1 91,888 6/30/2020
2.2.1 146,974 2/1/2019
2.0.1 184,748 2/23/2018
1.0.0 6,106 10/13/2017

Version 6.0.1.3
Added support for SetupGet