Skip to content

Unit test for ResilientTransaction example in resilient EF Core Connection. #17655

@sajanmittal

Description

@sajanmittal

for ResilientTransaction class example.

public class ResilientTransaction
{
private DbContext _context;
private ResilientTransaction(DbContext context) =>
_context = context ?? throw new ArgumentNullException(nameof(context));

public static ResilientTransaction New (DbContext context) =>
    new ResilientTransaction(context);

public async Task ExecuteAsync(Func<Task> action)
{
    // Use of an EF Core resiliency strategy when using multiple DbContexts
    // within an explicit BeginTransaction():
    // https://docs.microsoft.com/ef/core/miscellaneous/connection-resiliency
    var strategy = _context.Database.CreateExecutionStrategy();
    await strategy.ExecuteAsync(async () =>
    {
        using (var transaction = _context.Database.BeginTransaction())
        {
            await action();
            transaction.Commit();
        }
    });
}

}

How to cover Unit Test for ExecuteAsync. DO we need to mock context Database and Execution Strategy?


Document Details

Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions