Jiarenxiang | 38dcb05 | 2025-03-13 16:40:09 +0800 | [diff] [blame^] | 1 | const localStorageMock = { |
| 2 | getItem: jest.fn(), |
| 3 | setItem: jest.fn(), |
| 4 | removeItem: jest.fn(), |
| 5 | clear: jest.fn(), |
| 6 | }; |
| 7 | |
| 8 | global.localStorage = localStorageMock; |
| 9 | |
| 10 | Object.defineProperty(URL, 'createObjectURL', { |
| 11 | writable: true, |
| 12 | value: jest.fn(), |
| 13 | }); |
| 14 | |
| 15 | class Worker { |
| 16 | constructor(stringUrl) { |
| 17 | this.url = stringUrl; |
| 18 | this.onmessage = () => {}; |
| 19 | } |
| 20 | |
| 21 | postMessage(msg) { |
| 22 | this.onmessage(msg); |
| 23 | } |
| 24 | } |
| 25 | window.Worker = Worker; |
| 26 | |
| 27 | /* eslint-disable global-require */ |
| 28 | if (typeof window !== 'undefined') { |
| 29 | // ref: https://github.com/ant-design/ant-design/issues/18774 |
| 30 | if (!window.matchMedia) { |
| 31 | Object.defineProperty(global.window, 'matchMedia', { |
| 32 | writable: true, |
| 33 | configurable: true, |
| 34 | value: jest.fn(() => ({ |
| 35 | matches: false, |
| 36 | addListener: jest.fn(), |
| 37 | removeListener: jest.fn(), |
| 38 | })), |
| 39 | }); |
| 40 | } |
| 41 | if (!window.matchMedia) { |
| 42 | Object.defineProperty(global.window, 'matchMedia', { |
| 43 | writable: true, |
| 44 | configurable: true, |
| 45 | value: jest.fn((query) => ({ |
| 46 | matches: query.includes('max-width'), |
| 47 | addListener: jest.fn(), |
| 48 | removeListener: jest.fn(), |
| 49 | })), |
| 50 | }); |
| 51 | } |
| 52 | } |
| 53 | const errorLog = console.error; |
| 54 | Object.defineProperty(global.window.console, 'error', { |
| 55 | writable: true, |
| 56 | configurable: true, |
| 57 | value: (...rest) => { |
| 58 | const logStr = rest.join(''); |
| 59 | if (logStr.includes('Warning: An update to %s inside a test was not wrapped in act(...)')) { |
| 60 | return; |
| 61 | } |
| 62 | errorLog(...rest); |
| 63 | }, |
| 64 | }); |