Cloudflare テスト
@cloudflare/vitest-pool-workers
を使用することで、Cloudflare テストを簡単に実装できます。ただし、事前にいくつかの設定を行う必要があります。詳細については、Cloudflare テストに関するドキュメントをご覧ください。
vitest プールワーカーを使用した Cloudflare テストでは、実行時に cloudflare:test
モジュールが提供され、テスト中に 2 番目の引数として渡される環境が公開されます。詳細については、Cloudflare テスト API セクションを参照してください。
以下は、行うことができる設定の例です。
ts
import { defineWorkersProject } from '@cloudflare/vitest-pool-workers/config'
export default defineWorkersProject(() => {
return {
test: {
globals: true,
poolOptions: {
workers: { wrangler: { configPath: './wrangler.toml' } },
},
},
}
})
toml
compatibility_date = "2024-09-09"
compatibility_flags = [ "nodejs_compat" ]
[vars]
MY_VAR = "my variable"
次のもののようなアプリケーションを想像してください。
ts
// src/index.ts
import { Hono } from 'hono'
type Bindings = {
MY_VAR: string
}
const app = new Hono<{ Bindings: Bindings }>()
app.get('/hello', (c) => {
return c.json({ hello: 'world', var: c.env.MY_VAR })
})
export default app
cloudflare:test
モジュールから公開される env
を app.request()
に渡すことで、Cloudflare バインディングを使用してアプリケーションをテストできます。
ts
// src/index.test.ts
import { env } from 'cloudflare:test'
import app from './index'
describe('Example', () => {
it('Should return 200 response', async () => {
const res = await app.request('/hello', {}, env)
expect(res.status).toBe(200)
expect(await res.json()).toEqual({
hello: 'world',
var: 'my variable',
})
})
})
関連項目
@cloudflare/vitest-pool-workers
GitHub リポジトリの例
古いテストシステムから移行する