blob: fba964dcf794e0e18a88343983bd0341431b69fe [file] [log] [blame]
// 这个文件包含测试环境的设置代码
import { expect, afterEach } from 'vitest';
import { cleanup } from '@testing-library/react';
import * as matchers from '@testing-library/jest-dom';
// 扩展 Vitest 的断言能力
expect.extend(matchers);
// 每个测试后自动清理
afterEach(() => {
cleanup();
});
// 模拟 window.matchMedia
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: vi.fn().mockImplementation(query => ({
matches: false,
media: query,
onchange: null,
addListener: vi.fn(), // 兼容旧版 API
removeListener: vi.fn(), // 兼容旧版 API
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
dispatchEvent: vi.fn(),
})),
});
// 模拟 localStorage
const localStorageMock = (() => {
let store = {};
return {
getItem: (key) => store[key] || null,
setItem: (key, value) => {
store[key] = value.toString();
},
removeItem: (key) => {
delete store[key];
},
clear: () => {
store = {};
},
};
})();
Object.defineProperty(window, 'localStorage', {
value: localStorageMock,
});