기타

localStorage mocking 테스트파일

승딱 2021. 12. 2. 18:40
반응형

로그아웃시에 localStorage 에서 토큰을 지우는 작업이 되어야하는 부분 테스트 코드를 작성하는데

 

 

const localStorageSpy = jest.spyOn(window.localStorage,'removeItem');
userEvent.click(screen.getByText('logout'));

expect(localStorageSpy).toBeCalledWith('_token') 
// localStorage.removeItem('_token') 이 작동되나 확인하는코드

근데 이게 테스트가 안됬다 왜냐면 window.localStorage 는 removeItem 이라는 method를 가지고 있지 않기때문이다 ㅎㅎ

spyOn 으로 mocking 할때는 jest.spyOn( 객체 , '메서드네임'); 해서 써야하는데 콘솔을 찍어보자

window.localStorage 대신에 

Object.getPrototypeOf(window.localStorage) , window.localStorage.__proto__ , Storage.prototype

이걸로 쓰면 테스트 잘된다 

 

다음에 prototype 이랑 webStorage 글스기