| const localStorageMock = { |
| getItem: jest.fn(), |
| setItem: jest.fn(), |
| removeItem: jest.fn(), |
| clear: jest.fn(), |
| }; |
| |
| global.localStorage = localStorageMock; |
| |
| Object.defineProperty(URL, 'createObjectURL', { |
| writable: true, |
| value: jest.fn(), |
| }); |
| |
| class Worker { |
| constructor(stringUrl) { |
| this.url = stringUrl; |
| this.onmessage = () => {}; |
| } |
| |
| postMessage(msg) { |
| this.onmessage(msg); |
| } |
| } |
| window.Worker = Worker; |
| |
| /* eslint-disable global-require */ |
| if (typeof window !== 'undefined') { |
| // ref: https://github.com/ant-design/ant-design/issues/18774 |
| if (!window.matchMedia) { |
| Object.defineProperty(global.window, 'matchMedia', { |
| writable: true, |
| configurable: true, |
| value: jest.fn(() => ({ |
| matches: false, |
| addListener: jest.fn(), |
| removeListener: jest.fn(), |
| })), |
| }); |
| } |
| if (!window.matchMedia) { |
| Object.defineProperty(global.window, 'matchMedia', { |
| writable: true, |
| configurable: true, |
| value: jest.fn((query) => ({ |
| matches: query.includes('max-width'), |
| addListener: jest.fn(), |
| removeListener: jest.fn(), |
| })), |
| }); |
| } |
| } |
| const errorLog = console.error; |
| Object.defineProperty(global.window.console, 'error', { |
| writable: true, |
| configurable: true, |
| value: (...rest) => { |
| const logStr = rest.join(''); |
| if (logStr.includes('Warning: An update to %s inside a test was not wrapped in act(...)')) { |
| return; |
| } |
| errorLog(...rest); |
| }, |
| }); |