【问题标题】:Testing containerized microservice with external dependency测试具有外部依赖的容器化微服务
【发布时间】:2017-11-08 21:44:15
【问题描述】:

所以我构建了一个 REST API 微服务,它查询本地 Elasticsearch 实例并根据内部协议转换结果。我将它构建到 Docker 映像中,我想在构建中对其运行一些单元测试。由于 ES 连接到私有 Docker 网络,在构建期间微服务无法访问它,因此测试显然失败。我想知道,有没有办法绕过这种情况而不必使用一些复杂的测试框架来进行依赖注入?您如何在工作实践中测试这种容器?

【问题讨论】:

  • 如果他们跨系统边界进行测试,他们就不是单元测试。
  • 是的,我后来想通了,我会修改标题

标签: rest unit-testing docker microservices external-dependencies


【解决方案1】:

我会在没有任何测试的情况下构建应用程序。然后我将使用docker run 对其进行测试,以便您可以利用 docker 网络优势。

这比在构建中间的测试更优雅:

  1. docker build -t my_app:1.0-early您的应用程序以获取图像。
  2. docker run --network my_test_network my_app:1.0-early /run_test_cases.sh。返回正确的退出代码或文本。
  3. 根据测试成功与否,重新标记:docker tag my_app:1.0

您需要已经创建了一个 docker 网络 (docker network create my_test_network),或者更好地使用 docker-compose。

【讨论】:

  • 但这意味着我仍然必须自己运行测试并弄乱 Docker 环境,而不是在构建时触发测试而不为测试创建单独的容器
  • 这取决于您对“我自己”的含义。它可以是一个脚本。想想一天结束时,docker build 会为每一层运行一个新容器。如果您使用某些 CI 系统(gitlab、jenkins、bamboo、bitbucket 管道等),这可以让您将构建阶段与测试阶段分开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
相关资源
最近更新 更多