⚡
BunとDrizzleでSQLiteのテストを書く
こんな感じで単体テストが書けます。
単体テスト内でデータベースの作成とマイグレーションが完結する点が便利です。
CloudflareのD1の代わりにBunのSQLiteを使用していてもBunとDrizzleを使用して単体テストが書けます。
import { Database } from "bun:sqlite"
import { drizzle } from "drizzle-orm/bun-sqlite"
import { migrate } from "drizzle-orm/bun-sqlite/migrator"
import { eq } from "drizzle-orm"
import { test, expect } from "bun:test"
import { postsTable } from "./schema"
test("データベースに投稿を書き込む", async () => {
const sqlite = new Database()
const db = drizzle(sqlite)
migrate(db, { migrationsFolder: "./migrations" })
const postId = crypto.randomUUID()
await db.insert(postsTable).values({
id: postId,
text: "text",
})
const post = db
.select()
.from(postsTable)
.where(eq(postsTable.id, postId))
.get()
expect(post).not.toBeUndefined()
})
今回使用したschema.tsの中身はこちらです。
export const postsTable = sqliteTable("posts", {
id: text("uuid", { length: 256 }).notNull().unique(),
text: text("text", { length: 256 }).notNull(),
})
あとdrizzle.config.tsの中身はこのような感じにしました。
import type { Config } from "drizzle-kit"
export default {
dialect: "sqlite",
schema: "src/schema.ts",
out: "migrations",
driver: "d1-http",
dbCredentials: {
accountId: "account-id",
databaseId: "database-id",
token: "token",
},
} satisfies Config
Discussion