文章

💎 Ruby 虚拟测试容器

使用 Testcontainers 在 Ruby 测试中管理 Docker 容器

Testcontainers - GitHub

TestContainer 是一个 Ruby 库,它为您的测试提供了运行 Docker 容器的便捷方式。它的灵感来自于流行的 Java 测试容器库。

这个库简化了测试期间管理 Docker 容器的过程,从而更容易确保每个测试都有一个一致的、独立的环境。它支持广泛的容器,包括数据库、消息队列和 Web 服务器。

安装

安装 gem 并将其添加到应用程序的 Gemfile 中,执行:

1
$ bundle add testcontainers

如果没有使用 Bundler 来管理依赖关系,可以执行以下命令安装 gem:

1
$ gem install testcontainers

使用方法

要在测试中使用 Testcontainers,首先在测试设置中创建并启动一个容器。例如,要运行一个 Redis 容器:

1
2
container = Testcontainers::DockerContainer.new("redis:6.2-alpine").with_exposed_port(6379)
container.start

在测试中,现在可以访问容器的主机和映射端口:

1
2
host = container.host
port = container.mapped_port(6379)

这使您可以连接到容器化服务并执行测试。运行完测试后,您可以停止并删除容器:

1
2
container.stop
container.delete

有关更详细的示例,请参阅文档文件夹中的快速入门指南。

包含的模块

Testcontainers 包含一些模块,可以替代通用的 DockerContainer,用于常见的数据库和服务,提供预配置的设置并减少样板代码:

  • ComposeContainer
  • ElasticsearchContainer
  • MariadbContainer
  • MongoContainer
  • MysqlContainer
  • NginxContainer
  • PostgresContainer
  • RabbitmqContainer
  • RedisContainer
  • RedpandaContainer
  • SeleniumContainer
本文由作者按照 CC BY 4.0 进行授权