一个存储适配器只要有一条规则写错,就可能悄悄丢掉用户的内容。测试存储适配器最快的方法是 verifyStorageAdapter。它会用存储约定逐项检查你的适配器,并报告每一项的结果。
运行检查
import { verifyStorageAdapter } from "fabricjs-document-engine/storage";
const report = await verifyStorageAdapter(restStorage);
if (!report.ok) console.table(report.checks);report 是 { ok, checks }。每一项检查是 { name, passed, message }。
检查哪些内容
| 检查 | 为什么重要 |
|---|---|
expectedRevision 为 0 时能保存新文档 | 新文档能被存下来 |
| 能加载自己保存的文档 | 存进去什么,取出来就是什么 |
基于旧修订号的保存会以 SAVE_CONFLICT 拒绝 | 另一个标签页不能覆盖更新的内容 |
| 基于当前修订号的保存会被接受 | 正常保存仍然可用 |
expectedRevision 为 null 时会覆盖 | 保存冲突后「保留我的版本」能用 |
| 加载不存在的文档会被拒绝 | 缺失的文档会明确报错 |
| 能保存、列出、加载和删除版本 | 仅当适配器实现了版本方法时检查 |
检查会用随机 id 写入测试文档。如果你的适配器有 deleteDocument 方法,检查结束后会把它们删掉。
在哪里运行
在开发环境里对着测试数据库跑一次,或者放进你的测试套件:
import { expect, test } from "vitest";
import { verifyStorageAdapter } from "fabricjs-document-engine/storage";
test("the REST adapter follows the save rules", async () => {
const report = await verifyStorageAdapter(restStorage);
expect(report.checks.filter((check) => !check.passed)).toEqual([]);
});不要对着生产数据运行。每次改动都这样测试存储适配器,修订号检查一旦写坏,失败的是构建,而不是用户的保存。