我有一个 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)