iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
3
Modern Web

TypeScript + React + 雜七雜八系列 第 26

【Day 26】Jest,Mock

  • 分享至 

  • xImage
  •  

大家好,今天的篇章要介紹的是 Jest 的 Mock

一樣會延續前一天的專案結構接續下去進行修改,如果沒有參與到昨天的建置過程,這邊也有提供原始碼
https://github.com/littlehorseboy/typescript-react/tree/day25-jest


Mock

Mock 可以用來假裝成函數,有時第三方函示庫的 code 並不是測試案例想要測試的重點,亦或是一些內容過於依賴環境而無法方便執行的函數,就能用 Mock 提供的方法來模擬假的函數來執行,利用它來與測試代碼鏈接,假裝返回值

jest.mock()

直接拿個第三方 Axios 來做 mock 隔離的範例

+ __tests__/mock.Axios.test.ts

因為 typescript 強型別的關係,所以用了 ts-jest/utilsmocked 來包住要隔離的東西,並且能夠得到 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 了


上一篇
【Day 25】Jest,測試非同步 code 及 beforeEach
下一篇
【Day 27】React Testing Library
系列文
TypeScript + React + 雜七雜八30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言