📑
JestでlocalStorageをmockする
JestでlocalStorageをmockしようとしたときにやり方に困ったのでメモ。
最初はこんなふうにやろうとした
jest.spyOn(localStorage, 'setItem').mockImplementation(jest.fn())
そうするとこんなエラーが出る
TypeError: jest.spyOn(...).mockImplementation is not a function
ここら辺を調べるとlocalStorage
ではなくStorage.prototype
にするとうまくいくと書いてある。
実際試すと、エラーも出ず期待していた動作になった
jest.spyOn(Storage.prototype, 'setItem').mockImplementation(jest.fn())
prototypeを継承しているものに関しては、その大元の関数を指定してあげないといけないのかな。
Discussion