Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", true, true) .Build();public static ApplicationDbContext GetContext(IConfiguration configuration){ var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>(); var connectionString = configuration.GetConnectionString("AutoLot"); optionsBuilder.UseSqlServer(connectionString, sqlOptions => sqlOptions.<b>EnableRetryOn</b><b>Failure()</b>); return new ApplicationDbContext(optionsBuilder.Options);}Как вероятно вы помните, выделенный полужирным вызов
EnableRetryOnFailure()Добавьте еще один статический метод, который будет создавать новый экземпляр
ApplicationDbContextApplicationDbContextpublic static ApplicationDbContext GetSecondContext( ApplicationDbContext oldContext, IDbContextTransaction trans){ var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>(); optionsBuilder.UseSqlServer( oldContext.Database.GetDbConnection(), sqlServerOptions => sqlServerOptions.EnableRetryOnFailure()); var context = new ApplicationDbContext(optionsBuilder.Options); context.Database.UseTransaction(trans.GetDbTransaction()); return context;}Добавление класса BaseTest
Создайте в проекте новый каталог по имени
BaseBaseTest.csusingusing System;using System.Data;using AutoLot.Dal.EfStructures;using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Storage;using Microsoft.Extensions.Configuration;Сделайте класс абстрактным и реализующим
IDisposablereadonlyIConfigurationApplicationDbContextApplicationDbContextDispose()namespace AutoLot.Dal.Tests.Base{ public abstract class BaseTest : IDisposable { protected readonly IConfiguration Configuration; protected readonly ApplicationDbContext Context; public virtual void Dispose() { Context.Dispose(); } }}Инфраструктура тестирования xUnit предоставляет механизм для запуска кода до и после прогона каждого теста. Классы тестов (называемые оснастками), которые реализуют интерфейс
IDisposableDispose()Добавьте защищенный конструктор, который создает экземпляр реализации
IConfigurationApplicationDbContextTestHelpersprotected BaseTest(){ Configuration = TestHelpers.GetConfiguration(); Context = TestHelpers.GetContext(Configuration);}Добавление вспомогательных методов для выполнения тестов в транзакциях
Последние два метода в классе
BaseTestActionActionApplicationDbContextApplicationDbContextМетод
ExecutelnATransaction()ApplicationDbContextExecutelnASharedTransaction()ApplicationDbContextBaseTest