DbMocker 2.0.1-preview
dotnet add package DbMocker --version 2.0.1-preview
NuGet\Install-Package DbMocker -Version 2.0.1-preview
<PackageReference Include="DbMocker" Version="2.0.1-preview" />
paket add DbMocker --version 2.0.1-preview
#r "nuget: DbMocker, 2.0.1-preview"
// Install DbMocker as a Cake Addin #addin nuget:?package=DbMocker&version=2.0.1-preview&prerelease // Install DbMocker as a Cake Tool #tool nuget:?package=DbMocker&version=2.0.1-preview&prerelease
DbMocker - Simple Database Mocker for UnitTests
Introduction
This .NET library simplifies data mocking for UnitTests, to avoid a connection to a relational database. DbMocker use the standard Microsoft .NET DbConnection object. So, you can mock any toolkit, including EntityFramework, Dapper or ADO.NET; And for all database servers (SQL Server, Oracle, SQLite).
First, add the DbMocker NuGet packages.
Next, instanciate a MockDbConnection
and mock you SQL requests using a condition and return a DataTable.
Please, contact me if you want other features or to solve bugs.
// Sample method from your DataService
public int GetNumberOfEmployees(DbConnection connection)
{
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = "SELECT COUNT(*) FROM Employees";
return Convert.ToInt32(cmd.ExecuteScalar());
}
}
/* Create a text file "123-EMPLOYEES.txt" with this content
And set the build property to "Embedded resource".
Id Name Age
(int) (string) (int?)
10 Scott 21
20 Bill NULL
*/
[TestMethod]
public void UnitTest0()
{
var conn = new MockDbConnection();
// The text file "123-EMPLOYEES.txt" is embedded in this project.
// See the Samples folder.
// - 123 is an identifier (as you want)
// - EMPLOYEES is the CommandText Tag
// See https://docs.microsoft.com/en-us/ef/core/querying/tags
conn.Mocks.LoadTagsFromResources("123-EMPLOYEES");
// Call your "classic" methods to tests
var data = GetEmployees(conn);
// DbMocker read the embedded file
// and associated the content to the tag
Assert.AreEqual("Scott", data[0][1]);
Assert.AreEqual("Bill", data[1][1]);
}
[TestMethod]
public void UnitTest1()
{
var conn = new MockDbConnection();
// When a specific SQL command is detected,
// Don't execute the query to your database engine (SQL Server, Oracle, SQLite, ...),
// But returns this _Table_.
conn.Mocks
.When(cmd => cmd.CommandText.StartsWith("SELECT") &&
cmd.Parameters.Count() == 0)
.ReturnsTable(MockTable.WithColumns("Count")
.AddRow(14));
// Call your "classic" methods to tests
int count = GetNumberOfEmployees(conn);
Assert.AreEqual(14, count);
}
See https://apps72.com for more information.
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. |
-
net8.0
- Microsoft.SqlServer.Management.SqlParser (>= 160.22506.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DbMocker:
Package | Downloads |
---|---|
MockTracer
Base test class for generated code |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on DbMocker:
Repository | Stars |
---|---|
dtm-labs/client-csharp
The new client for dtm in csharp, including workflow, dtmcli, and dtmgrpc
|
Version | Downloads | Last updated |
---|---|---|
2.0.1-preview | 534 | 2/4/2024 |
1.25.0 | 5,450 | 11/9/2024 |
1.24.0 | 430 | 11/6/2024 |
1.23.0 | 31,648 | 12/19/2023 |
1.22.0 | 52,347 | 7/7/2022 |
1.21.0 | 14,373 | 11/27/2021 |
1.20.0 | 1,340 | 10/8/2021 |
1.19.0 | 13,904 | 9/26/2021 |
1.18.0 | 69,323 | 2/7/2021 |
1.17.0 | 1,150 | 1/25/2021 |
1.16.0 | 563 | 1/23/2021 |
1.15.0 | 918 | 1/13/2021 |
1.14.0 | 547 | 1/13/2021 |
1.13.0 | 668 | 12/22/2020 |
1.12.0 | 564 | 12/14/2020 |
1.11.0 | 698 | 11/23/2020 |
1.10.0 | 596 | 11/23/2020 |
1.9.0 | 597 | 11/12/2020 |
1.8.0 | 592 | 11/11/2020 |
1.7.0-Preview2 | 667 | 5/20/2020 |
1.7.0-Preview1 | 516 | 5/20/2020 |
1.6.0 | 48,411 | 4/17/2019 |
1.5.0 | 1,611 | 9/2/2018 |
1.4.1-alpha | 840 | 8/29/2018 |
1.4.0 | 1,075 | 8/5/2018 |
1.3.0 | 1,068 | 8/2/2018 |
1.2.0 | 1,045 | 7/31/2018 |
1.1.0 | 1,275 | 7/15/2018 |