iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
Modern Web

關於 UI 元件你所該知道的事系列 第 29

Day 29 - 實戰演練 — 元件單元測試

https://ithelp.ithome.com.tw/upload/images/20211014/201207541KtHgYtiz5.png

測試會用到的工具是 React Testing Library,後續對元件有改動時也可以使用 Snapshot testing

基本上測試撰寫的 SOP 就是這樣:

  1. 測 最基本的情況 Component 該有的要有
    • forwardRefs
    • should wrap children by popper container:Popper 的 children 會被包在一層 Popper 的 div 上
  2. 測 各種 props 有沒有正常顯示?
    • 測 style
    • 測 element, attribute
    • 測 behavior → EX: onClick
  3. 測 coverage
    • coverage 100% → 把每一行每一個 if else branch 都跑過
      1. 每個 props 都測過
      2. props 之間互相影響的分支也要測
      3. 東西有正反面的時候: T → F ; F → T 都要測
  4. 測 behavior ( 就算全部都有跑到 可能在某些東西 change 的時候會有東西沒 sync 好 )
    • 如:從 controlled 切換到 uncontrolled 的時候 checked 要切換主導的人
      • 雖然正常情況是不會這樣使用

而主要其實就是用 DOM API 去檢查有沒有相應的改變,這邊要注意的是 Jest 模擬出的 DOM 渲染方式與真實 DOM 會有些不同,所以可能會踩到一些雷,但就先不在這贅述了!

以 Popper 的測試舉例如下:
https://ithelp.ithome.com.tw/upload/images/20211014/20120754s9ZdfMd3MP.png


上一篇
Day 28 - 實戰演練 — Pagination
下一篇
Day 30 - 結語 — 首尾呼應&致謝
系列文
關於 UI 元件你所該知道的事30

尚未有邦友留言

立即登入留言