小编Edd*_*dez的帖子

如何使用 SQL Server 数据库设置 dotnet Testcontainers 进行集成测试?

我有一个 API REST .NET 7,我想使用 sql server 容器数据库构建集成测试。我尝试遵循文档中的示例(https://dotnet.testcontainers.org/examples/aspnet/):

const string weatherForecastStorage = "weatherForecastStorage";

var mssqlConfiguration = new MsSqlTestcontainerConfiguration();
mssqlConfiguration.Password = Guid.NewGuid().ToString("D");
mssqlConfiguration.Database = Guid.NewGuid().ToString("D");

var connectionString = $"server={weatherForecastStorage};user id=sa;password={mssqlConfiguration.Password};database={mssqlConfiguration.Database}";

_weatherForecastNetwork = new NetworkBuilder()
 .WithName(Guid.NewGuid().ToString("D"))
 .Build();

_mssqlContainer = new ContainerBuilder<MsSqlTestcontainer>()
 .WithDatabase(mssqlConfiguration)
 .WithNetwork(_weatherForecastNetwork)
 .WithNetworkAliases(weatherForecastStorage)
 .Build();

Run Code Online (Sandbox Code Playgroud)

但 MsSqlTestcontainer 和 MsSqlTestcontainerConfiguration 类不存在。

nugget 包版本是 3.0.0,但官方文档似乎已经过时,因为构造函数 ContainerBuilder<> 也已过时。

我正在寻找的是创建一个带有 SQL SERVER 映像的容器,然后创建一个数据库/表并将其与实体框架核心一起使用(我不知道如何创建它们,甚至不知道这是否有必要)。

另一方面,我尝试了这样的事情:


       private readonly IContainer _dbContainer = new ContainerBuilder()
               .WithImage("mcr.microsoft.com/mssql/server")
               .WithEnvironment("MSSQL_SA_PASSWORD", "MyStrongPassword")
               .WithEnvironment("ACCEPT_EULA", "Y")
               .WithEnvironment("MSSQL_DATA_DIR", "/var/opt/sqlserver/data")
               .WithEnvironment("MSSQL_LOG_DIR", "/var/opt/sqlserver/log")
               .WithEnvironment("MSSQL_BACKUP_DIR", "/var/opt/sqlserver/backup")
               .WithPortBinding(49401, 1433) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net integration-testing testcontainers .net-7.0

7
推荐指数
1
解决办法
7370
查看次数