JavaScript 之旅 (4):Object.keys() & Object.values() & Object.entries()

留言

有時要將 JS 物件轉成其他資料結構,所以需要迭代物件中的所有 property,過去會用 for-in 陳述句,但只想列舉 own property,就必須用 hasOwnProperty() 才能解決。後來 ES5 新增的 Object.keys() 解決了非 own property 的問題,但還是要手動透過 property name 來存取 value,不方便!終於在 ES2017 (ES8) 新增了 Object.values()Object.entries(),可以直接取得 property value 了!

本篇來介紹 Object.values()Object.keys()Object.entries(),以及在 ECMAScript spec 是如何定義的。

Jest:DOM 測試 (jQuery)

留言

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

Jest:Timer Mocks

留言

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