Net Core: переопределить WebPplicationFactory Services DBContext с базой данных Inmemory ⇐ C#

Место общения программистов C#
Anonymous
Net Core: переопределить WebPplicationFactory Services DBContext с базой данных Inmemory

Сообщение Anonymous »

Я настраиваю WebApplicationFactory для использования запуска, AppSettings из исходного проекта приложения. AppSettings JSON следит за DBContext: < /p>

"ConnectionStrings": {
"DbConnection": "Data Source=.;Initial Catalog = TestDB; Integrated Security=True"
< /code>

Я хочу переопределить службы, чтобы использовать базу данных Inmemory, из переменной ниже. Как я бы это сделал?namespace Integrationtest
{
public class CustomWebApplicationFactory : WebApplicationFactory where TStartup : class
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.ConfigureAppConfiguration((hostingContext, configurationBuilder) =>
{
var type = typeof(TStartup);
var path = @"C:\OriginalApplication";

configurationBuilder.AddJsonFile($"{path}\\appsettings.json", optional: true, reloadOnChange: true);
configurationBuilder.AddEnvironmentVariables();
});
}
}
}
< /code>

фактический тест интеграции: < /strong> < /p>

public class DepartmentAppServiceTest : IClassFixture

{
public dbContextTest context;
public CustomWebApplicationFactory _factory;
public DepartmentAppServiceTest(CustomWebApplicationFactory factory)
{
_factory = factory;
}

[Fact]
public async Task DepartmentAppTest()
{
using (var scope = _factory.Server.Host.Services.CreateScope())
{
context.Department.Add(new Department { DepartmentId = 2, DepartmentCode = "123", DepartmentName = "ABC" });
context.SaveChanges();

var foo = scope.ServiceProvider.GetRequiredService();
var departmentDto = await foo.GetDepartmentById(2);
Assert.Equal("123", departmentDto.DepartmentCode);
}
}
}
< /code>

Я хочу переопределить базу данных служб, чтобы использовать базу данных Inmemory, из этой переменной ниже. Как бы я это провели? < /P>

var dbtest = scope.ServiceProvider.GetRequiredService();

var options = new DbContextOptionsBuilder()
.UseInMemoryDatabase(databaseName: "TestDB")
.Options;


Подробнее здесь: https://stackoverflow.com/questions/573 ... ory-databa

Вернуться в «C#»