为了确保测试的无副作用和独立性,我们可以在测试开始前清空数据库。
编辑 /src/api-test.ts 文件,onBefore 方法会在每次测试运行之前被执行。
/src/api-test.ts
我们可以在这个方法中, 使每次测试开始之前,都清空一次数据库。
import { $ } from "bun";import { sql } from "drizzle-orm";import { useDrizzle } from "./uses/drizzle";import { configDrizzle } from "./config/drizzle"; export default { async onBootstrap() {}, async onBefore() { const drizzle = await useDrizzle(); const schema = await import("../generated/database-schema"); // 寻找出所有的表 const tables: Array<string> = []; for (const key in schema) "getSQL" in schema[key] && tables.push(getTableName(schema[key] as unknown as Table)); // 将这些表全部删除 for (const table of tables) await drizzle.execute(sql.raw(`DROP TABLE IF EXISTS ${table};`)); // 使用 drizzle-kit 重新创建这些表 await $`bun x drizzle-kit push`; return {}; },};