OpenAICloudflare Developer Platform2026/06/25 0:00

Durable Objects, Workers - Test Durable Object eviction with new cloudflare:test helpers

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

cloudflare:testでDurable Objectのエビクションをテスト可能に

Key Points

  • evictDurableObject追加
  • evictAllDurableObjects追加
  • v0.16.20以上で利用可

Summary

@cloudflare/vitest-pool-workers に evictDurableObjectevictAllDurableObjects のテストヘルパーが追加され、cloudflare:test から利用できるようになりました。これらはプロダクションでのライフサイクル(アイドル状態の Durable Object がメモリからエビクトされる挙動)をシミュレートして、インスタンスの再生成や WebSocket の取り扱いを含む挙動をテストできます。利用には @cloudflare/vitest-pool-workers@0.16.20 以降が必要です。

Key Points

  • インポート例: import { evictDurableObject, evictAllDurableObjects } from "cloudflare:test"
  • 特定インスタンスのエビクション: await evictDurableObject(stub)
  • WebSocket 振る舞いを制御: await evictDurableObject(stub, { webSockets: "close" })(ハイバネートではなくクローズする挙動を検証)。
  • すべてのエビクタブルな名前空間上の実行中 Durable Object を一括エビクト: await evictAllDurableObjects()
  • テスト用途: 再初期化、状態永続化、接続の切断や再接続などライフサイクル依存の振る舞いを自動化して検証可能。
  • 必要バージョン: @cloudflare/vitest-pool-workers@0.16.20 以上で利用可能。ドキュメントは Test APIs と Testing Durable Objects を参照してください。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Durable Objects、Workers — 新しい cloudflare:test ヘルパーで Durable Object の追い出し(eviction)をテスト

Durable Objects、Workers — 新しい cloudflare:test ヘルパーで Durable Object の追い出し(eviction)をテスト

概要

@cloudflare/vitest-pool-workers パッケージに evictDurableObjectevictAllDurableObjects のテスト用ヘルパーが追加され、cloudflare:test からエクスポートされるようになりました。これらのヘルパーを使うことで、アイドル状態の Durable Object がメモリから追い出されるという本番環境のライフサイクルをシミュレートし、追い出し後の挙動をテストできます。詳しい背景は "Lifecycle of a Durable Object" を参照してください。

使用例(TypeScript)

以下は cloudflare:test のヘルパーを使ったサンプルです。

import { evictDurableObject , evictAllDurableObjects } from "cloudflare:test" ;
import { env } from "cloudflare:workers" ;
const id = env . COUNTER . idFromName ( "my-counter" ) ;
const stub = env . COUNTER . get ( id ) ;
// Evict the Durable Object instance pointed to by a specific stub
await evictDurableObject ( stub ) ;
// Close WebSockets instead of hibernating them
await evictDurableObject ( stub , { webSockets : "close" } ) ;
// Evict all currently-running Durable Objects in evictable namespaces
await evictAllDurableObjects () ;
  • evictDurableObject(stub):特定の stub が指す Durable Object インスタンスを追い出します。
  • evictDurableObject(stub, { webSockets: "close" }):WebSocket をハイバーネートせずにクローズします。
  • evictAllDurableObjects():追い出し可能なネームスペースで現在実行中のすべての Durable Object を追い出します。

利用可能なバージョン

これらのヘルパーは @cloudflare/vitest-pool-workers@0.16.20 以降で利用可能です。

詳細・参照

  • Test APIs reference
  • Testing Durable Objects guide
  • Lifecycle of a Durable Object

(上記ドキュメント名を参照して、実践的なテスト方法や追加オプションを確認してください。)