// 编辑器窗格加载状态:编辑器创建完成前显示「正在打开文档…」,就绪后撤下并回传 API。 import { describe, it, expect, vi } from 'vitest' import { createRoot } from 'react-dom/client' import { act } from 'react-dom/test-utils' let resolveCreate: (() => void) | null = null const fakeEditor = { create: () => new Promise((resolve) => { resolveCreate = resolve }), destroy: () => Promise.resolve(), action: (fn: (ctx: unknown) => unknown) => fn({ get: () => { throw new Error('no view in test') } }), } vi.mock('../src/editor/editor', () => ({ createMarkdownEditor: () => fakeEditor, getMarkdown: () => '', })) import EditorPane from '../src/components/EditorPane' describe('EditorPane 加载状态', () => { it('创建未完成时显示加载提示,完成后撤下并回传就绪 API', async () => { const container = document.createElement('div') document.body.appendChild(container) const root = createRoot(container) const readyApis: unknown[] = [] await act(async () => { root.render( undefined} onCursor={() => undefined} onReady={(api) => readyApis.push(api)} focusMode={false} typewriter={false} />, ) }) expect(container.textContent).toContain('正在打开文档') expect(readyApis).toHaveLength(0) await act(async () => { resolveCreate?.() }) expect(container.textContent).not.toContain('正在打开文档') expect(readyApis).toHaveLength(1) expect((readyApis[0] as { editor: unknown }).editor).toBe(fakeEditor) await act(async () => { root.unmount() }) container.remove() }) })