Код: Выделить всё
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.ConfigureServices(services =>
{
var context = services.FirstOrDefault(descriptor => descriptor.ServiceType == typeof(DartsDbContext));
if (context != null)
{
services.Remove(context);
var options = services.Where(r => (r.ServiceType == typeof(DbContextOptions))
|| (r.ServiceType.IsGenericType && r.ServiceType.GetGenericTypeDefinition() == typeof(DbContextOptions))).ToArray();
foreach (var option in options)
{
services.Remove(option);
}
}
services.AddDbContext(options =>
{
options.UseInMemoryDatabase("InMemoryDbForTesting");
});
});
}
Произошла одна или несколько ошибок. (Службы для поставщиков баз данных «Npgsql.EntityFrameworkCore.PostgreSQL», «Microsoft.EntityFrameworkCore.InMemory» зарегистрированы у поставщика услуг. Только один поставщик баз данных может быть зарегистрирован у поставщика услуг.
Если я удалю строку кода в файле Program.cs, которая добавляет исходный DbContext, это будет работать, потому что только один DbContext существует.
Я хочу сохранить исходное внедрение DbContext в Program.cs и хочу, чтобы CustomWebApplicationFactory заменил его только для тестов.
Подробнее здесь: https://stackoverflow.com/questions/794 ... xt-from-di
Мобильная версия