// 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 // 必须设置为可写 | |
}); |