import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { TouchDesignerServer } from "../../src/server/touchDesignerServer.js"; // 正しいパスでモックを設定 vi.mock("../../src/features/prompts/index.js", () => ({ registerPrompts: vi.fn(), })); vi.mock("../../src/features/resources/index.js", () => ({ registerResources: vi.fn(), })); vi.mock("../../src/features/tools/index.js", () => ({ registerTools: vi.fn(), })); vi.mock("@modelcontextprotocol/sdk/server/mcp.js", () => ({ McpServer: vi.fn(function MockMcpServer(this: Record) { this.connect = vi.fn().mockResolvedValue(undefined); this.close = vi.fn().mockResolvedValue(undefined); this.tool = vi.fn(); this.server = { sendLoggingMessage: vi.fn(), setRequestHandler: vi.fn(), }; }), })); vi.mock("../../src/tdClient/index.js", () => ({ createTouchDesignerClient: vi.fn().mockReturnValue({ getTdInfo: vi .fn() .mockResolvedValue({ data: { server: "info" }, success: true }), }), })); describe("TouchDesignerServer", () => { beforeEach(() => { vi.clearAllMocks(); }); it("should initialize dependencies in the correct order", async () => { // テスト前にモジュールをインポート const promptsModule = await import("../../src/features/prompts/index.js"); const toolsModule = await import("../../src/features/tools/index.js"); new TouchDesignerServer(); expect(McpServer).toHaveBeenCalledTimes(1); // モック関数が呼ばれたか確認 expect(promptsModule.registerPrompts).toHaveBeenCalled(); expect(toolsModule.registerTools).toHaveBeenCalled(); }); });