Files
vue3-element-admin/tests/unit/composables/useDictSync.test.ts
2025-12-26 12:35:37 +08:00

63 lines
1.7 KiB
TypeScript

import { describe, it, expect, beforeEach, vi } from "vitest";
import { useDictSync } from "@/composables/websocket/useDictSync";
import { useDictStore } from "@/store/modules/dict";
import { setActivePinia, createPinia } from "pinia";
// Mock useStomp
vi.mock("@/composables/websocket/useStomp", () => ({
useStomp: vi.fn(() => ({
isConnected: ref(false),
connect: vi.fn(),
disconnect: vi.fn(),
subscribe: vi.fn(() => "sub-id"),
unsubscribe: vi.fn(),
})),
}));
describe("useDictSync", () => {
beforeEach(() => {
setActivePinia(createPinia());
localStorage.clear();
vi.clearAllMocks();
});
describe("初始化", () => {
it("应该创建字典同步实例", () => {
const dictSync = useDictSync();
expect(dictSync).toBeDefined();
expect(dictSync.initialize).toBeDefined();
expect(dictSync.cleanup).toBeDefined();
});
it("应该初始化 WebSocket 连接", () => {
const dictSync = useDictSync();
dictSync.initialize();
// 验证初始化逻辑(具体实现取决于 useDictSync 的内部逻辑)
expect(dictSync).toBeDefined();
});
});
describe("清理", () => {
it("应该清理 WebSocket 连接", () => {
const dictSync = useDictSync();
dictSync.initialize();
dictSync.cleanup();
// 验证清理逻辑
expect(dictSync).toBeDefined();
});
});
describe("字典同步", () => {
it("应该处理字典更新消息", () => {
const dictSync = useDictSync();
const dictStore = useDictStore();
dictSync.initialize();
// 模拟接收字典更新消息
// 注意:这里需要根据实际的消息格式来测试
expect(dictStore).toBeDefined();
});
});
});