Skip to content

Instantly share code, notes, and snippets.

@sanusart
Last active August 1, 2020 09:03
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save sanusart/c1558845350cc8d8cafbe3c903d46afc to your computer and use it in GitHub Desktop.
Save sanusart/c1558845350cc8d8cafbe3c903d46afc to your computer and use it in GitHub Desktop.
Jest mock localStorage #test #jest
// ./__mocks__/localStorage.js
let mockStorage = {};
module.exports = window.localStorage = {
setItem: (key, val) => Object.assign(mockStorage, {[key]: val}),
getItem: (key) => mockStorage[key],
clear: () => mockStorage = {}
};
// Then import it in the reducer test file
import '../__mocks__/localStorage';
@jandersonTIC
Copy link

It worked! Thanks.

@nikhilSriva
Copy link

Hey, can you give me a little insight on the usage? Like in the .test.js file, do we have to initialize anything or code something?

@roppa
Copy link

roppa commented Jun 26, 2018

@krey3ix line 11 has instructions. Just import it like import '../__mocks__/localStorage'; and it sets window.localStorage automatically. I guess you could do something like:

let mockStorage = {};

const localStorage = {
  setItem: (key, val) => Object.assign(mockStorage, {
    [key]: val
  }),
  getItem: (key) => mockStorage[key],
  clear: () => mockStorage = {}
};

export default localStorage;

Then

const localStorage = import '../__mocks__/localStorage';
global.localStorage = localStorage;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment