目标:模拟本地存储以在Jest中进行测试。
问题:Jest无法加载localStorage模拟文件,我正在获取setItem 未定义,因为未根据Jest定义其localStorage。
但是,我可以通过简单地将其导入到每个测试文件中来绕过此问题,但这似乎非常麻烦且并非最佳选择。请帮助我,以便使这段代码变得更好。
我已经使用 create-react-app
创建了react应用
if (!window.localStorage) {
window.localStorage = {}
Object.assign(window.localStorage, {
removeItem: function removeItem(key) {
delete this[key]
}.bind(window.localStorage),
setItem: function setItem(key, val) {
this[key] = String(val)
}.bind(window.localStorage),
getItem: function getItem(key) {
return this[key]
}.bind(window.localStorage),
})
}
这是具有Jest配置的package.json文件。
"jest": {
"setupFiles": [
"jest-canvas-mock",
"./test/setup-test-framework"
]
}