using Testcontainers.PostgreSql; using Testcontainers.Redis; using Microsoft.AspNetCore.Hosting; using Fengling.Backend.Infrastructure; using Microsoft.EntityFrameworkCore; namespace Fengling.Backend.Web.Tests.Fixtures; public class WebAppFixture : AppFixture { private RedisContainer _redisContainer = null!; private PostgreSqlContainer _databaseContainer = null!; protected override async ValueTask PreSetupAsync() { _redisContainer = new RedisBuilder() .WithCommand("--databases", "1024").Build(); _databaseContainer = new PostgreSqlBuilder() .WithUsername("postgres").WithPassword("123456") .WithEnvironment("TZ", "Asia/Shanghai") .WithDatabase("postgres").Build(); var tasks = new List { _redisContainer.StartAsync() }; tasks.Add(_databaseContainer.StartAsync()); await Task.WhenAll(tasks); } protected override void ConfigureApp(IWebHostBuilder a) { a.UseSetting("ConnectionStrings:Redis", _redisContainer.GetConnectionString()); a.UseSetting("ConnectionStrings:PostgreSQL", _databaseContainer.GetConnectionString()); a.UseEnvironment("Development"); } }