Files
hunjing/frontend/src/components/chat/CharacterSwitcher.test.tsx
T
2026-08-21 16:00:13 +08:00

44 lines
1.2 KiB
TypeScript

import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { describe, expect, it, vi } from "vitest";
vi.mock("next/navigation", () => ({
useRouter: () => ({ push: vi.fn(), replace: vi.fn() }),
}));
// 不触发实际的 API 调用
vi.mock("@/lib/api", () => ({
charactersApi: {
listCharacters: vi.fn().mockResolvedValue({ items: [], total: 0 }),
},
}));
import { CharacterSwitcher } from "./CharacterSwitcher";
describe("CharacterSwitcher", () => {
it("渲染当前人物名", () => {
render(
<CharacterSwitcher
currentCharacterId="char_1"
currentDisplayName="小测"
/>,
);
expect(screen.getByText("小测")).toBeInTheDocument();
});
it("点击展开下拉菜单", async () => {
const user = userEvent.setup();
render(
<CharacterSwitcher
currentCharacterId="char_1"
currentDisplayName="小测"
/>,
);
// 当前人物名可点击
await user.click(screen.getByText("小测"));
// dropdown 应该出现——因为 listCharacters 返回空列表,
// 此处只验证下拉渲染不报错
expect(screen.getByText("小测")).toBeInTheDocument();
});
});