DbMocker 2.0.1-preview

This is a prerelease version of DbMocker.
dotnet add package DbMocker --version 2.0.1-preview
NuGet\Install-Package DbMocker -Version 2.0.1-preview
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="DbMocker" Version="2.0.1-preview" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DbMocker --version 2.0.1-preview
#r "nuget: DbMocker, 2.0.1-preview"
#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.
// 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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 81 2/4/2024
1.23.0 5,279 12/19/2023
1.22.0 40,808 7/7/2022
1.21.0 13,601 11/27/2021
1.20.0 1,272 10/8/2021
1.19.0 12,983 9/26/2021
1.18.0 64,572 2/7/2021
1.17.0 1,104 1/25/2021
1.16.0 520 1/23/2021
1.15.0 864 1/13/2021
1.14.0 503 1/13/2021
1.13.0 627 12/22/2020
1.12.0 519 12/14/2020
1.11.0 650 11/23/2020
1.10.0 561 11/23/2020
1.9.0 554 11/12/2020
1.8.0 552 11/11/2020
1.7.0-Preview2 624 5/20/2020
1.7.0-Preview1 488 5/20/2020
1.6.0 43,162 4/17/2019
1.5.0 1,553 9/2/2018
1.4.1-alpha 793 8/29/2018
1.4.0 1,024 8/5/2018
1.3.0 1,022 8/2/2018
1.2.0 995 7/31/2018
1.1.0 1,215 7/15/2018