MockQueryable.EntityFrameworkCore 9.0.0

MockQueryable

Extensions for mocking Entity Framework Core async queries like ToListAsync, FirstOrDefaultAsync, and more using popular mocking libraries such as Moq, NSubstitute, and FakeItEasy — all without hitting the database.

❤️ If you really like the tool, please 👉 Support the project or ☕ Buy me a coffee.


📦 NuGet Packages

Package Downloads Latest Version Install via Package Manager
MockQueryable.Core Downloads Version Install-Package MockQueryable.Core
MockQueryable.EntityFrameworkCore Downloads Version Install-Package MockQueryable.EntityFrameworkCore
MockQueryable.Moq Downloads Version Install-Package MockQueryable.Moq
MockQueryable.NSubstitute Downloads Version Install-Package MockQueryable.NSubstitute
MockQueryable.FakeItEasy Downloads Version Install-Package MockQueryable.FakeItEasy

✅ Build & Status

.NET Core AppVeyor License


⭐ GitHub Stats

Stars Contributors Last Commit Commit Activity Open Issues


💡 Why Use MockQueryable?

Avoid hitting the real database in unit tests when querying via IQueryable:

var query = _userRepository.GetQueryable();

await query.AnyAsync(x => ...);
await query.FirstOrDefaultAsync(x => ...);
await query.ToListAsync();
// etc.

🚀 Getting Started

1. Create Test Data

var users = new List<UserEntity>
{
    new UserEntity { LastName = "Smith", DateOfBirth = new DateTime(2012, 1, 20) },
    // More test data...
};

2. Build the Mock

var mock = users.BuildMock(); // for IQueryable

3. Set Up in Your favorite Mocking Framework

Moq

_userRepository.Setup(x => x.GetQueryable()).Returns(mock);

NSubstitute

_userRepository.GetQueryable().Returns(mock);

FakeItEasy

A.CallTo(() => userRepository.GetQueryable()).Returns(mock);

🗃️ Mocking DbSet<T>

var mockDbSet = users.BuildMockDbSet();

// Moq
var repo = new TestDbSetRepository(mockDbSet.Object);

// NSubstitute / FakeItEasy
var repo = new TestDbSetRepository(mockDbSet);

🔧 Adding Custom Logic

Example: Custom FindAsync

mock.Setup(x => x.FindAsync(userId)).ReturnsAsync((object[] ids) =>
{
    var id = (Guid)ids[0];
    return users.FirstOrDefault(x => x.Id == id);
});

Example: Custom Expression Visitor

Build a mock with the custom SampleLikeExpressionVisitor for testing EF.Functions.Like

var mockDbSet = users.BuildMockDbSet<UserEntity, SampleLikeExpressionVisitor>();

🧩 Extend for Other Frameworks

You can even create your own extensions. Check the example here.


🔍 Sample Project

See the sample project for working examples.


No packages depend on MockQueryable.EntityFrameworkCore.

Upgrade to .Net 9 and EntityFrameworkCore 9

Version Downloads Last updated
9.0.0 2 10/09/2025
8.0.1 2 10/10/2025
8.0.0 8 08/09/2025
7.0.4-beta 19 10/04/2024
7.0.3 15 10/07/2024
7.0.2 18 10/07/2024
7.0.1 21 10/07/2024
7.0.0 21 10/07/2024
6.0.1 14 10/07/2024
6.0.0 18 10/07/2024
5.0.2 16 10/07/2024
5.0.1 22 02/06/2022
5.0.0 19 10/07/2024
5.0.0-preview.7 20 10/07/2024
3.1.3 20 10/07/2024