如何使用Sqlite数据库设置TestContainers?

gg0vcinb  于 2023-03-13  发布在  SQLite
关注(0)|答案(1)|浏览(130)

我正在寻找一个例子来说明如何在Sqlite数据库中使用TestContainers.NET。我已经根据这里的例子(https://dotnet.testcontainers.org/api/create_docker_container/)尝试了以下操作:

[Fact]
public async Task TestContainerSetup()
{
    const ushort HttpPort = 80;

    var sqliteContainer = new ContainerBuilder()
        .WithName(Guid.NewGuid().ToString("D"))
        .WithImage("keinos/sqlite3:latest") // https://hub.docker.com/r/keinos/sqlite3
        //.WithCommand("sqlite3 --version")
        .WithPortBinding(HttpPort, true)
        .Build();

    await sqliteContainer.StartAsync()
        .ConfigureAwait(false);

    using var httpClient = new HttpClient();
    httpClient.BaseAddress = new UriBuilder("http", sqliteContainer.Hostname, sqliteContainer.GetMappedPublicPort(HttpPort)).Uri;

    var httpResponseMessage = await httpClient.GetAsync(string.Empty)
        .ConfigureAwait(false);

    Assert.Equal(HttpStatusCode.OK, httpResponseMessage.StatusCode);
}

不幸的是,await sqliteContainer.StartAsync().ConfigureAwait(false);超时了,我有点不知道如何继续。

ve7v8dk2

ve7v8dk21#

我认为这里不需要测试容器,只需在每个测试中使用唯一的SQLite连接字符串,可以在文件模式下使用不同的文件,也可以通过内存中的连接字符串使用相同的文件。

var connectionString = $"file:{Guid.NewGuid()}?mode=memory&cache=shared";

相关问题