Jest:DOM 測試 (jQuery)

留言

若用 Jest 來測試直接操作 DOM 的程式碼,最大好處是不用安裝額外的套件就可以測試,因為 Jest 附帶了 jsdom,它是用來模擬 DOM 環境,讓你很像在瀏覽器上呼叫 DOM API,進而觀察 DOM 的操作是否符合預期,也就代表測畫面不用真的開啟瀏覽器,不用等待畫面渲染就可以進行測試。

Jest:Timer Mocks

留言

常用的 native timer 包括 setTimeoutsetIntervalclearTimeoutclearInterval 等,用到這些 timer 的函數可以說是依賴於真實流逝的時間。如果 timer 要跑幾秒後才會觸發,或是要確認某函數是否在固定週期內被呼叫幾次,你不可能真的去等待 timer 跑完才能驗證結果吧,那根本是浪費時間。所以應該要使用 mock 函數來 mock 掉那些 timer 函數,透過 Jest 提供的功能來控制時間,其中就有時間快轉的功能,減少測試要等待的時間。

Jest:Mock 函數

留言

Jest 提供的 mock 函數可讓你自行決定要 mock 到什麼程度,並且可讓你在呼叫該 mock 函數之後,捕捉呼叫的次數、傳入的參數、使用 new 實例化的 instance,以及你指定要回傳的值,我們可透過這些資訊來測試 mock 函數是否如預期的呼叫。

Jest:Setup & Teardown

留言

每個測試案例都必須是獨立的,不能互相影響,而解決方法就是讓每個測試在執行前進行重設,或在每個測試結束後清除痕跡。在 Jest,提供 setup 和 teardown 的函數,能讓你自訂在執行 describe 區塊或 test 區塊的前後分別要做什麼準備和收尾。