javascript - 开玩笑地模拟 localStorage 方法
问题描述
我想开玩笑地模拟 localStorage 方法以进行错误模拟。我在utility.js 中定义了localstorage getter 和setter 方法。我想模拟在被调用localStorage.setItem
时抛出错误。utility.setItem
//file: utility.js
export default {
getItem(key) {
return localStorage.getItem(key);
},
setItem(key, value) {
localStorage.setItem(key, value);
}
};
开玩笑,
test('throw error', () => {
localStorage.setItem = jest.fn(() => {
console.log(" called ");
throw new Error('ERROR');
});
utility.setItem('123', 'value');
});
然而localStorage.setItem
,模拟永远不会被调用。我也试过做
window.localStorage.setItem = jest.genMockFunction(()=>{console.log(" Mock Called")});
global.localStorage.setItem = jest.fn(()=>{console.log(" Mock Called")});
解决方案
jest.spyOn(window.localStorage.__proto__, 'setItem');
完全不需要其他任何东西,如此处所述:https ://github.com/facebook/jest/issues/6798#issuecomment-440988627
推荐阅读
- java - edittext 选择模式选项的文本不完全可见
- wordpress - 创建具有多个 id 传入的产品简码
- javascript - 如何将按键事件侦听器添加到我在 javascript 中动态创建的输入文本字段中?
- python - 我无法从解密函数创建加密函数
- generics - 如何在 SwiftUI 中返回通用视图
- c# - Firebase 与统一的集成
- apache-kafka - 将主题创建和 ACL 操作仅限于 Strimzi 中的管理员用户
- java - 尝试使用 FireBase 登录后,应用重定向到注册页面
- css - 溢出换行:任何地方和溢出换行:断字之间的区别?
- python - 创建多个图:作为索引器提供的不可对齐的布尔系列