Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testcontainers/2024-11-20-llt32

 Testcontainers/2024-11-20-llt32

社内のLTイベント「えるLT Vol.32 オンライン」で発表した資料です

Satoshi SAKAO

November 20, 2024
Tweet

More Decks by Satoshi SAKAO

Other Decks in Programming

Transcript

  1. 話すひと 2 🏢 インフォコム株式会社 サービスマネジメント室 👨🔧 ソフトウェアエンジニア 🛠 Node.js /

    AWS / IoT / iOS (Swift) / Linux 💖 猫,B'z,テクテクライフ(ランク: 30),数学 Satoshi SAKAO @ottijp.com 𝕏 @ottijp
  2. Example 9 import { expect } from 'chai' import {

    GenericContainer } from 'testcontainers' import redis from 'async-redis' it('redis works', async () => { const container = await new GenericContainer('redis') .withExposedPorts(6379) .start() const client = redis.createClient( container.getFirstMappedPort(), container.getHost() ) await client.set('key', 'value') expect(await client.get('key')).to.equal('value') await client.quit() await container.stop() }) redisコンテナの作成 reidsクライアントの作成と テストデータのセット テストデータの検証 クリーンアップ
  3. Features • テスト間でコンテナを再利用する • 実行中コンテナでコマンドを実行する • コンテナのログストリームを取得する • ネットワークを作成しコンテナへアタッチする •

    イメージをビルドする • composeを起動する • ホストのポートをコンテナにexposeする • コンテナ起動とテストを同期する(Wait strategy) 10
  4. Supported runtimes • Docker • Podman • Colima • Rancher

    Desktop 12 export DOCKER_HOST=unix://${HOME}/.rd/docker.sock export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
  5. Supported languages • Java • Go • .Net • Node.js

    • Python • Rust • Haskell • Ruby 15
  6. Wait strategy • ポートのリスン待ち(デフォルト) • Timeout • ログの出力待ち • Health

    Check • httpレスポンス • コマンド実行結果 • カスタムストラテジ • またはこれらの組み合わせ 16