| // jest-dom adds custom jest matchers for asserting on DOM nodes. |
| // allows you to do things like: |
| // expect(element).toHaveTextContent(/react/i) |
| // learn more: https://github.com/testing-library/jest-dom |
| import '@testing-library/jest-dom'; |
| |
| // 模拟 localStorage |
| const localStorageMock = (function() { |
| let store = {}; |
| return { |
| getItem: jest.fn((key) => store[key] || null), |
| setItem: jest.fn((key, value) => { |
| store[key] = String(value); |
| }), |
| removeItem: jest.fn((key) => { |
| delete store[key]; |
| }), |
| clear: jest.fn(() => { |
| store = {}; |
| }) |
| }; |
| })(); |
| |
| // 挂载到全局 |
| Object.defineProperty(window, 'localStorage', { |
| value: localStorageMock, |
| writable: true // 必须设置为可写 |
| }); |