コンテンツにスキップ
BlackOps1.xは試験的なバージョンです。Production Readyは2.xを予定しています。Releases
BlackOps
Esc
navigateopen⌘Jpreview
このページの内容

Testing

BlackOps Applicationを検証するときの層と、既存の実行例への入口を確認する。

BlackOps ApplicationのTestは、Operationの業務規則、HTTP BindingとValidation、Inline/Deferredの実行境界、Databaseを含むWorker経路を分けて確認します。BlackOps専用のTesting APIやTest Runnerは提供していないため、Applicationが選んだPHP Test Frameworkと実Runtimeを組み合わせてください。

確認する層

確認すること 既存の入口
Operation 型付きValueからOutcomeまたは業務Rejectedを返す Authoring
HTTP Boundary Route、Binding、宣言的Value Validation、Status/JSON Value and Validation
Inline/Deferred 同じOperation ModelでResponseと受付境界が分かれる Inline and Deferred
Frontend Contract Generate/Drift、DOMなしStrict Type、.url().toRequest().fetch().status().wait()のRequestとResult 4. Generated Operation Objectから呼ぶ
Consumer E2E Build、Migration、HTTP、Worker、Journal、Outcomeを実Processでつなぐ Quickstart and Skeleton
Full-stack Browser Application-owned Identity、Framework Session、Ephemeral Auth、SvelteKit BFF、Inline/Deferred UI、Sensitive Boundary、Accessibility BlackOps Board Reference Application

Unit TestだけでDeferred処理のDurabilityを保証したと判断しないでください。少なくともApplicationと同じPostgreSQL SchemaへMigrationを適用し、HTTP 202のOperation IDを使ってWorker後のJournalとOutcomeを確認します。

Validation Failureを固定する

成功例だけでなく、壊れたJSONの400、Binding Failureの422、宣言的Value Validationの422、Handler内の業務Rejectedを別Caseとして固定します。Sensitive値を使うTestでは、Canonical StoreのAccess制御とObserved JournalのMask/Exclude/Hashを混同せず、公開するLogやFixtureへRaw Secretを残さないでください。

Generated Frontendを実HTTPへ接続する

QuickstartはFrozen Frontend Lockfileと次の順序を正本にします。

pnpm install --frozen-lockfile
php blackops build:compile
php blackops frontend:generate
php blackops frontend:check
pnpm test

Consumer E2EではGenerated Welcome/Report/Order/Diagnostics ObjectをWorker Mode HTTPへ接続し、200 completed、202 accepted、422 validation、500 internal、Fetch Throwのtransportを確認します。.url().toRequest()、Readonly Metadataも同じCompiled Contractと比較します。

Deferred Journeyでは、.fetch()が一回のPOSTだけで202を返すこと、.status()acceptedを一回取得すること、Nodeの有限.wait()中にShell側でWorker Retryを進めてTyped Completed Outcomeへ到達することを確認します。別Operationの短いDeadlineはpoll_timeoutになり、その後のWorker処理を壊しません。不正Credentialは401、Anonymous/Unknown/Denyは404、Non-terminalだけにRetry-After、全Responseにprivate, no-storeがあることも実HTTPで固定します。

Browser Testはnative AbortController、DOMなしNode Testは購読可能なStructural Signal Helperを使います。Sensitive Input、Credential、Actor ID、Worker ID、Raw Transport ErrorをGenerated Tree、Typed Result、Application/Observed Logで検索し、非露出を固定してください。

QuickstartはFrameworkの最短Contractを実HTTPへ接続します。BlackOps BoardはそのContractをApplication-owned Identity、Framework Session Core、Ephemeral Auth Operation、Domain/Infrastructure、SvelteKit Same-origin BFF、Deferred Progress UIへ広げたReference Applicationです。BlackOps Board Reference Applicationでは、Clean Installと個別Consumer、実Browser E2Eの使い分けを確認できます。

再現可能なInput/OutputはFirst Operation、失敗時の調査順はTroubleshootingを参照してください。