大家好,今天的篇章要介紹的是 Jest 的 Mock
一樣會延續前一天的專案結構接續下去進行修改,如果沒有參與到昨天的建置過程,這邊也有提供原始碼
https://github.com/littlehorseboy/typescript-react/tree/day25-jest
Mock 可以用來假裝成函數,有時第三方函示庫的 code 並不是測試案例想要測試的重點,亦或是一些內容過於依賴環境而無法方便執行的函數,就能用 Mock 提供的方法來模擬假的函數來執行,利用它來與測試代碼鏈接,假裝返回值
直接拿個第三方 Axios 來做 mock 隔離的範例
+ __tests__/mock.Axios.test.ts
因為 typescript 強型別的關係,所以用了 ts-jest/utils
的 mocked
來包住要隔離的東西,並且能夠得到 mock 物件的屬性
第 10 行,則是必須強轉型成 AxiosPromise 才能夠符合型別參考
執行結果
npm run test -- __tests__/mock.Axios.test.ts
測試結果 response.data 就是 123 沒錯
typescript 的強型別倒是讓筆者在撰寫 mock 時,摸索了 Axios 的 .d.ts 一段時間 XD,一方面是不熟 mock,一方面 typescript 也不夠熟,不過就還是硬著頭皮上了
以上就是用 typescript 在撰寫 mock 的情形,期望能再為本篇添加幾個案例,目前真的好少 XD
最後附上原始碼
https://github.com/littlehorseboy/typescript-react/tree/day27-jest
明天要介紹 React Testing Library,準備要來測試 component 了