import { afterEach, expect, it } from "vitest"; import { renderToStaticMarkup } from "react-dom/server"; import { ObjectTree } from "./ObjectTree"; import { useWorkspaceStore } from "./store"; const initial = useWorkspaceStore.getState(); const serverState = useWorkspaceStore.getInitialState(); const initialServer = { connections: serverState.connections, activeConnectionId: serverState.activeConnectionId, tree: serverState.tree, treeLoading: serverState.treeLoading, sidebarFilter: serverState.sidebarFilter, }; afterEach(() => { Object.assign(serverState, initialServer); useWorkspaceStore.setState(initial, true); }); it("展开 Redis DB 时渲染 Key,而不是把 JSX 内的源码当文字展示", () => { const state = { connections: [{ id: "redis-local", name: "Redis 连接", driver: "redis", host: "127.0.0.1", port: 6379, user: "", password: "", database: "0" }], activeConnectionId: "redis-local", tree: [{ name: "0", kind: "database", loaded: true, children: [{ name: "USER:1", kind: "key", type: "string", ttl: -1 }] }], treeLoading: false, sidebarFilter: "", } as const; Object.assign(serverState, state); const html = renderToStaticMarkup(); expect(html).toContain("USER:1"); expect(html).toContain("搜索 DB0 的 Key"); expect(html).not.toContain("renderRedisNodes("); expect(html).not.toContain("服务端已按 pattern SCAN"); });