feat(student-portal): 完成Docker构建验证+全量测试通过+nextstep下游依赖文档

This commit is contained in:
SpecialX
2026-07-13 16:49:31 +08:00
parent 64b2016fa8
commit 40f07b7a16
27 changed files with 4742 additions and 31 deletions

View File

@@ -0,0 +1,66 @@
// Vitest 测试环境初始化
// 依据vitest.config.ts setupFiles
import { beforeEach, afterEach } from "vitest";
import "@testing-library/jest-dom/vitest";
import { server } from "../mocks/server";
import { handlers } from "../mocks/handlers";
// jsdom 环境补充matchMediarecharts 等库依赖)
if (!window.matchMedia) {
Object.defineProperty(window, "matchMedia", {
writable: true,
value: (query: string): MediaQueryList => ({
matches: false,
media: query,
onchange: null,
addListener: () => {},
removeListener: () => {},
addEventListener: () => {},
removeEventListener: () => {},
dispatchEvent: () => false,
}),
});
}
// jsdom 环境补充IntersectionObserver
if (!window.IntersectionObserver) {
class MockIntersectionObserver {
observe(): void {}
unobserve(): void {}
disconnect(): void {}
takeRecords(): IntersectionObserverEntry[] {
return [];
}
}
Object.defineProperty(window, "IntersectionObserver", {
writable: true,
value: MockIntersectionObserver,
});
}
// jsdom 环境补充ResizeObserverrecharts 依赖)
if (!window.ResizeObserver) {
class MockResizeObserver {
observe(): void {}
unobserve(): void {}
disconnect(): void {}
}
Object.defineProperty(window, "ResizeObserver", {
writable: true,
value: MockResizeObserver,
});
}
// 清理 localStorage
beforeEach(() => {
localStorage.clear();
sessionStorage.clear();
});
// 全局恢复 MSW 初始 handlers防止测试间隔离问题
// 某些测试文件使用 server.resetHandlers(...newHandlers) 会替换初始 handlers
// 此处显式恢复原始 handlers确保后续测试文件的请求能被正确拦截
afterEach(() => {
server.resetHandlers(...handlers);
});