используется локальная функция. Сначала она проверяет, содержит ли таблица какие-то записи, и если нет, то переходит к обработке выборочных данных. Из фасадного экземпляра
базы данных создается экземпляр реализации
IExecutionStrategy
, применяемый для создания явной транзакции, которая необходима для включения и отключения вставки идентичности. Записи добавляются; если все прошло успешно, тогда транзакция фиксируется, а в противном случае подвергается откату.
Приведенные далее два открытых метода используются для сброса базы данных. Метод
InitializeData
удаляет и воссоздает базу данных перед ее заполнением начальными данными, а метод
ClearDatabase
просто удаляет все записи, сбрасывает идентичность и заполняет базу начальными данными:
public static void InitializeData(ApplicationDbContext context)
{
DropAndCreateDatabase(context);
SeedData(context);
}
public static void ClearAndReseedDatabase(ApplicationDbContext context)
{
ClearData(context);
SeedData(context);
}
Настройка тестов
Вместо создания клиентского приложения для испытания скомпилированного уровня доступа к данным
AutoLot
будет применяться автоматизированное интеграционное тестирование. Тесты продемонстрируют обращение к базе данных на предмет создания, чтения, обновления и удаления, что позволит исследовать код без накладных расходов по построению еще одного приложения. Каждый тест, рассматриваемый в этом разделе, будет выполнять запрос (создание, чтение, обновление или удаление) и иметь один и более операторов
Assert
для проверки, получен ли ожидаемый результат.
Создание проекта
Первым делом необходимо настроить платформу интеграционного тестирования с использованием xUnit — инфраструктуры тестирования, совместимой с .NET Core. Начните с добавления нового по имени
AutoLot.Dal.Tests
, который в Visual Studio носит название xUnit Test Project (.NET Core) (Проект тестирования xUnit (.NET Core)).
На заметку! Модульные тесты предназначены для тестирования одной единицы кода. Формально повсюду в главе создаются интеграционные тесты, т.к. производится тестирование кода C# и EF Core на всем пути к базе данных и обратно.
Введите следующую команду в окне командной строки:
Поскольку версия пакета Microsoft.NET.Test.Sdk, поставляемая с шаблоном
проектов xUnit, обычно отстает от текущей доступной версии, воспользуйтесь диспетчером пакетов NuGet для обновления всех пакетов NuGet. Затем добавьте ссылки на проекты
AutoLot.Models
и
AutoLot.Dal
.
В случае работы с CLI выполните приведенные далее команды(обратите внимание, что команды удаляют и повторно добавляют пакет
Microsoft.NET.Test.Sdk
, чтобы гарантировать ссылку на самую последнюю версию):
Для извлечения строки подключения во время выполнения будут задействованы конфигурационные возможности .NET Core, предусматривающие работу с файлом JSON. Добавьте в проект файл JSON по имени
appsettings.json
и поместите в него информацию о своей строке подключения в следующем формате (надлежащим образом скорректировав ее):
{
"ConnectionStrings": {
"AutoLot": "server=.,5433;Database=AutoLotFinal;
User Id=sa;Password=P@ssw0rd;"
}
}
Модифицируйте файл проекта, чтобы файл
appsettings.json
копировался в выходной каталог при каждой компиляции проекта, для чего добавьте в файл