[Day 4] 開始寫useLocalStorage測試吧

先講解第一種最常見的方法吧~
首先我們要模擬LocalStorage做一個假的LocalStorageMock:
LocalStorageMock主要有五個東西
  1. 存儲空間store,這邊我們用Record來寫他的型別,Record<K,T>可以紀錄所有物件裡keyvalue的型別,K是key的型別,T是value的型別
  1. getItem: 給予key取得store裡的value
  1. setItem: 將資料存取進store中,valueunknown但是最終會存進去string,所以我寫as known as string
  1. remove: 給予key取得store裡的value ,雖然我們這次不會用到,但是最好還是把所有實際上可能會用到的功能寫上去
  1. clear: 清除store
接下來我們要把這個假的LocalStorageMock替代window裡的真的localStorage
這邊我們用到兩個新的東西,beforeEachbeforeAll
  1. beforeAll :所在區域內會第一個執行。
  1. beforeEach :每一次的測試前會先執行。
順便補充另外兩個
  1. afterAll :所在區域內最後一個執行。
  1. afterEach :每一次的測試後會馬上執行。
區域是指如果放在describe 裡面,像block scope一樣,describe裡面就是區域
每一次測試是指ittest (雖然我們沒用到test,但他其實跟it差不多)
 
接下來我們要寫測試了
  1. 測試沒有資料時我們初始值有被設定進localStorage並且取得到
  1. 能夠接受他是callback function
  1. 能夠接受是array
  1. 如果一開始LocalStorage就有存取資料則使用存取資料當預設值
  1. 可以設定新資料
  1. 可以用callback function 設定新資料
當我們寫完之後,就會發現test發生錯誤拉
notion image
這就是為什麼我們要寫測試拉
究竟是為什麼呢,就留給明天再說吧,自己也可以練習看看喔
如果自己寫完全沒有出錯的人,代表你很棒喔,測試就是為了怕在寫function時遇到沒預期的錯誤
 
今天的完整程式碼
 
抱歉今天這麼晚才出產,最近工作有點忙,我應該先提前存好文章的🥲