Files
Genarrative/apps/ai-game-creator-shell/tests/ErrorReportDialog.test.tsx
T
k88936 8b5bd93356
Project CI / Repository checks (pull_request) Failing after 14s
Project CI / Backend tests (pull_request) Failing after 14s
Project CI / Frontend tests (pull_request) Successful in 2m30s
Project CI / Native shell tests (pull_request) Successful in 17m28s
修复错误报告弹窗打开时读取错误
报告弹窗打开时重新读取当前进程错误快照

通知仅负责控制弹窗打开状态

补充弹窗快照读取测试并同步技术方案
2026-09-05 18:31:50 +08:00

56 lines
1.7 KiB
TypeScript

/** @vitest-environment jsdom */
import { cleanup, render, screen } from '@testing-library/react';
import type { ReactNode } from 'react';
import { afterEach, describe, expect, it, vi } from 'vitest';
const mockState = vi.hoisted(() => ({
getPending: vi.fn(),
readLogs: vi.fn(),
}));
vi.mock('../src/services/errorReporting', () => ({
ackClientErrorEventsWithRetry: vi.fn(),
getPendingClientErrorEvents: mockState.getPending,
getStableErrorReportSubmissionId: vi.fn(),
readApplicationDiagnosticLogs: mockState.readLogs,
submitErrorReportBatch: vi.fn(),
}));
vi.mock('../src/components/modal/ThemedModal', () => ({
ThemedModal: ({ open, children }: { open: boolean; children: ReactNode }) =>
open ? <div role="dialog">{children}</div> : null,
}));
import { ErrorReportDialog } from '../src/components/error-report/ErrorReportDialog';
const event = {
eventId: 'rust-error-1',
fingerprint: 'fingerprint-1',
source: 'test',
message: '打开面板时读取的错误',
occurredAt: '1',
count: 1,
};
describe('ErrorReportDialog', () => {
afterEach(() => {
cleanup();
mockState.getPending.mockReset();
mockState.readLogs.mockReset();
});
it('只在面板打开时读取最新错误快照', async () => {
mockState.getPending.mockResolvedValue([event]);
mockState.readLogs.mockResolvedValue([]);
const view = render(<ErrorReportDialog open={false} onClose={vi.fn()} />);
expect(mockState.getPending).not.toHaveBeenCalled();
view.rerender(<ErrorReportDialog open onClose={vi.fn()} />);
expect(await screen.findByText(event.message)).toBeTruthy();
expect(mockState.getPending).toHaveBeenCalledTimes(1);
});
});