📑

JestでlocalStorageをmockする

2022/08/17に公開

JestでlocalStorageをmockしようとしたときにやり方に困ったのでメモ。
最初はこんなふうにやろうとした

jest.spyOn(localStorage, 'setItem').mockImplementation(jest.fn())

そうするとこんなエラーが出る

 TypeError: jest.spyOn(...).mockImplementation is not a function

ここら辺を調べるとlocalStorageではなくStorage.prototypeにするとうまくいくと書いてある。
https://www.anycodings.com/questions/how-do-i-deal-with-localstorage-in-jest-tests
実際試すと、エラーも出ず期待していた動作になった

jest.spyOn(Storage.prototype, 'setItem').mockImplementation(jest.fn())

prototypeを継承しているものに関しては、その大元の関数を指定してあげないといけないのかな。

Discussion