MockQueryable.FakeItEasy
8.0.1
See the version list below for details.
dotnet add package MockQueryable.FakeItEasy --version 8.0.1
NuGet\Install-Package MockQueryable.FakeItEasy -Version 8.0.1
<PackageReference Include="MockQueryable.FakeItEasy" Version="8.0.1" />
<PackageVersion Include="MockQueryable.FakeItEasy" Version="8.0.1" />
<PackageReference Include="MockQueryable.FakeItEasy" />
paket add MockQueryable.FakeItEasy --version 8.0.1
#r "nuget: MockQueryable.FakeItEasy, 8.0.1"
#:package MockQueryable.FakeItEasy@8.0.1
#addin nuget:?package=MockQueryable.FakeItEasy&version=8.0.1
#tool nuget:?package=MockQueryable.FakeItEasy&version=8.0.1
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 | Install-Package MockQueryable.Core |
||
| MockQueryable.EntityFrameworkCore | Install-Package MockQueryable.EntityFrameworkCore |
||
| MockQueryable.Moq | Install-Package MockQueryable.Moq |
||
| MockQueryable.NSubstitute | Install-Package MockQueryable.NSubstitute |
||
| MockQueryable.FakeItEasy | Install-Package MockQueryable.FakeItEasy |
✅ Build & Status
⭐ GitHub Stats
💡 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.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. |
-
net8.0
- FakeItEasy (>= 8.3.0)
- MockQueryable.EntityFrameworkCore (>= 8.0.1)
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 |
|---|---|---|
| 9.0.0 | 914 | 10/6/2025 |
| 8.0.1 | 1,121 | 10/6/2025 |
| 8.0.0 | 14,902 | 7/27/2025 |
| 7.0.4-beta | 3,059 | 9/24/2024 |
| 7.0.3 | 303,169 | 9/2/2024 |
| 7.0.2 | 18,937 | 8/20/2024 |
| 7.0.1 | 256,039 | 3/7/2024 |
| 7.0.0 | 397,619 | 11/21/2022 |
| 6.0.1 | 537,966 | 3/28/2022 |
| 6.0.0 | 6,748 | 3/24/2022 |
| 5.0.2 | 20,481 | 3/24/2022 |
| 5.0.1 | 420,081 | 5/25/2021 |
| 5.0.0 | 69,720 | 11/12/2020 |
| 5.0.0-preview.7 | 779 | 7/28/2020 |
| 3.1.3 | 88,001 | 5/19/2020 |
| 3.1.2 | 17,040 | 4/17/2020 |
| 3.1.1 | 11,563 | 1/25/2020 |
| 3.0.2 | 2,689 | 12/20/2019 |
| 3.0.1 | 2,103 | 10/11/2019 |
| 3.0.0 | 5,739 | 9/30/2019 |
| 1.1.0 | 5,294 | 7/28/2019 |
#88 MockQueryable.NSubstitute 8.0.0 Breaks .AsQueryable() calls on DbSet - Thanks @Catlandor