如何模拟localStorage.setIem和localStorage.在JEST中removeItem
How to mock localStorage.setIem and localStorage.removeItem in JEST
当我尝试在jest中模拟react组件的localStorage时,
spyOn(window.localStorage,'removeItem');
window.localStorage.removeItem("key1");
window.localStorage.removeItem("key2");
expect(window.localStorage.removeItem).toHaveBeenCalledWith("key1");
expect(window.localStorage.removeItem).toHaveBeenCalledWith("key2");
并使用下面的代码来模拟localStorage
let localStorageMock = (function() {
var storage = {};
return {
setItem: function(key, value) {
storage[key] = value || '';
},
getItem: function(key) {
return storage[key] || null;
},
removeItem: function(key) {
delete storage[key];
},
get length() {
return Object.keys(storage).length;
},
key: function(i) {
var keys = Object.keys(storage);
return keys[i] || null;
}
};
})();
Object.defineProperty(window, 'localStorage', { value: localStorageMock });
我通过在;
中添加下面的设置环境脚本文件,为会话存储进行了存储测试 Object.defineProperty(window, 'sessionStorage', { value: {}, writable: true });
包。Json文件看起来像;
"jest": {
"setupTestFrameworkScriptFile": "jest/jest-setupTestFrameworkScriptFile.js",
}
我实际上不相信你在最新版本的jest中需要这个,但是我从更早的版本开始就使用了这个设置。
使用此方法时需要注意的一件事是,它可以在测试之间持久化数据,因此您需要在beforeEach;
中添加以下内容sessionStorage = {};
我在我的项目package.json
中使用了这个:
"jest": {
"setupFiles": ["<rootDir>/app/mock/localStorageMock.js"]
}
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何将localStorage值设置为false
- 如果localstorage为空,则显示欢迎消息
- 使用Jest测试React Native应用程序
- 基于localStorage的Meteor激活模板
- LocalStorage phonegap摄像头图像
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- 为什么localStorage[“..”]未定义,而localStorage.getItem(“..”)为null
- 使用HTML5 localStorage和jQuery添加到收藏夹/书签
- 在特定条件下从存储在localStorage中的阵列中删除对象
- JavaScript/Ionic2-为什么我可以't检索localStorage值
- using LocalStorage ionic 2
- 如何使用javascript localStorage保存用户选择并在不同的html页面中显示
- 从localStorage添加和检索阵列
- Angular2/JavaScript-如何显示localStorage保存的所有变量并获取所有键的总长度
- 使用nodejs保存到localStorage
- 在Javascript中使用LocalStorage
- 通过phonegap中的电子邮件发送存储在html5 localStorage中的信息
- 通过localStorage中的密钥获取ID
- 如何模拟localStorage.setIem和localStorage.在JEST中removeItem