admin管理员组文章数量:1410689
when i try to mock the localStorage of a react ponent in jest as below,
spyOn(window.localStorage,'removeItem');
window.localStorage.removeItem("key1");
window.localStorage.removeItem("key2");
expect(window.localStorage.removeItem).toHaveBeenCalledWith("key1");
expect(window.localStorage.removeItem).toHaveBeenCalledWith("key2");
and used the below code for localStorage mocking
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 });
when i try to mock the localStorage of a react ponent in jest as below,
spyOn(window.localStorage,'removeItem');
window.localStorage.removeItem("key1");
window.localStorage.removeItem("key2");
expect(window.localStorage.removeItem).toHaveBeenCalledWith("key1");
expect(window.localStorage.removeItem).toHaveBeenCalledWith("key2");
and used the below code for localStorage mocking
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 });
Share
edited Sep 5, 2017 at 9:21
Blackus
7,2235 gold badges42 silver badges52 bronze badges
asked Jun 30, 2016 at 15:20
NithilaNithila
3131 gold badge7 silver badges19 bronze badges
2
- What is the error you're getting? – jhhoff02 Commented Jun 30, 2016 at 15:24
- I didn't get any error message, but the lines are not covered in unit testing. – Nithila Commented Jun 30, 2016 at 15:28
2 Answers
Reset to default 4I've done this for session storage for store testing by adding a setup environment script file with the following in;
Object.defineProperty(window, 'sessionStorage', { value: {}, writable: true });
The package.json file then looks like;
"jest": {
"setupTestFrameworkScriptFile": "jest/jest-setupTestFrameworkScriptFile.js",
}
I'm not actually convinced you need this in the latest version of jest however I've used this setup since a much earlier version.
One thing when using this approach you need to be aware of is that it can persist data between tests so you'll want to add the following in the beforeEach;
sessionStorage = {};
I used this in my project's package.json
:
"jest": {
"setupFiles": ["<rootDir>/app/mock/localStorageMock.js"]
}
本文标签: javascriptHow to mock localStoragesetIem and localStorageremoveItem in JESTStack Overflow
版权声明:本文标题:javascript - How to mock localStorage.setIem and localStorage.removeItem in JEST - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744823586a2626928.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论