Skip to content
Wen-Hsiu Hsu's Avatar Image

程式碼之外,還有生活的藝術 前端工程師 / 攝影 / 生活紀錄

  • 文章334
  • 標籤474
Buy Me A Coffee
  • Advanced Web Dev Quiz (27)
  • Deep JavaScript Foundations v3 (69)
  • Full Stack Fundamentals (47)
  • JavaScript Hard Parts v3 (50)
  • JS地下城 (5)
  • Testing Fundamentals (27)
  • TypeScript Fundamentals (28)
  • Web Performance Fundamentals (41)
  • You Might Not Need a Framework (32)
  • 學習經歷 (2)
  • 生活亂談 (2)
  • 程式筆記 (4)

Dev

前端技術、踩坑紀錄與學習筆記

332 篇
2026-10-0112 分鐘閱讀

這篇整理 Testing Library 除了 getByRole、getByTestId 外的查詢方法:用 findByAltText 找圖片、getByLabelText 靠標籤定位輸入框,並說明 get 找到多個結果會報錯、getAll 回傳陣列,find 則靠輪詢等待元素出現,處理延遲渲染的時機問題。

2026-10-0129 分鐘閱讀

這篇透過一系列 Accident Counter 練習題,示範 act() 如何等待重新渲染再斷言、initialCount prop 如何讓元件從特定狀態起跑,也記錄一次因為 getByRole 正規表示式打錯、忘記重新 render 而除錯的過程,並比較單一測試涵蓋完整流程跟拆成多個小測試的取捨。

2026-09-1916 分鐘閱讀

講師 Steve Kinney 用一個能跑起來的計數器元件示範測試:用 Testing Playground 找選擇器、用 data-testid 取代易變動的 class,並介紹 toHaveTextContent、toBeDisabled 等 jest-dom matcher,測試手法跨框架皆通用。

2026-09-1916 分鐘閱讀

Testing Library 強迫用螢幕報讀器尋找元素的方式查詢 DOM,示範 getByRole 找不到就直接報錯即是一種驗證,並比較 fireEvent 跟更貼近真實使用者行為、需要 async/await 的 user-event 有何差異,也說明如何用 afterEach 清空按鈕。

2026-09-1814 分鐘閱讀

講師示範一個最陽春的原生 JavaScript 按鈕,示範怎麼驗證它是不是真的按鈕元素、初始文字對不對,以及呼叫 button.click() 模擬點擊後文字有沒有正確變化;也回答學員提問,說明 happy-dom 需要額外安裝、且這套測試手法對 Vue、Angular 這類框架同樣適用,跟框架本身無關。

2026-09-1812 分鐘閱讀

講師 Steve Kinney 說明測試其實在 Node 裡執行、根本沒有 DOM 可用,因此需要 JSDOM 或 HappyDOM 在 Node 裡重建瀏覽器 API;並比較兩者準確度與效能的取捨,說明這種做法介於純函式測試與真正啟動瀏覽器之間,也示範怎麼在 vitest 設定裡切換 environment。

2026-09-1713 分鐘閱讀

講師 Steve Kinney 說明 beforeEach 這類 hook 能省去每個測試重複建立資料的樣板,但也提醒過度抽象會讓人看測試時搞不清楚資料從哪來,測試該追求的是簡單清楚,而不是不重複;也說明現代測試框架只要用 async/await,就不再需要手動呼叫 done callback 處理非同步程式碼。

2026-09-1731 分鐘閱讀

講師 Steve Kinney 讓學員動手把一個帶隨機能力值與時間戳記的 Character 類別測試補完,示範用 expect.objectContaining 只驗證關心的欄位、用 expect.any 忽略隨機值,到拆成小測試、用大於比較取代寫死初始值,最後用依賴注入把隨機性搬到函式外部,讓測試徹底控制它。

2026-09-1613 分鐘閱讀

講師 Steve Kinney 用一個會產生隨機 UUID 的 Person 類別,示範直接用 toEqual 比對整個物件為什麼注定失敗;並介紹用 expect.any(String) 只驗證型別、或用 expect.stringMatching 驗證 ID 前綴,只鎖定真正在乎的部分,放過真正隨機的那一段。

2026-09-1615 分鐘閱讀

講師 Steve Kinney 說明為什麼物件與陣列這類參照型別無法直接用三個等號比較,帶出 toBe 與 toEqual 的適用場景差異,並用真實案例解釋 toStrictEqual 額外檢查的 undefined 屬性與原型型別,也介紹 .not 修飾詞與只該用來除錯的 test.fails。

MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog
Photo by Federica Galli on Unsplash