哈嘍,大家好溶握,我是海怪杯缺。
前段時間一直在給公司項目引入 Jest,這過程中學到了不少東西睡榆,也查了很多相關(guān)資料萍肆。最后編寫了一本小書《Jest 實踐指南》袍榆,
希望能幫助到想了解和學習前端測試的朋友。
[圖片上傳失敗...(image-c11d8f-1653009837996)]
測試難點
Jest 看似很簡單塘揣,就像很多博客寫的那樣:
expect(sum(1, 1)).toEqual(2)
然而在真實業(yè)務(wù)中包雀,寫出一個好測試的難度并不低。我總結(jié)了一下寫測試的幾個難點:
不會配置亲铡。 Jest 的上手文檔非常簡單才写,甚至不需要配置。但真實情況是只要一個配置沒配好奖蔓,所有測試都跑不起來赞草。測試不像開發(fā),代碼有問題可以慢慢調(diào)吆鹤,
而是一個 0 - 1 游戲厨疙,不是成功就是失敗,挫敗感非常強疑务。
不知道要怎么 Mock沾凄。 這個絕對是經(jīng)典中的經(jīng)典。雖然官方文檔有教程知允,但是真實的業(yè)務(wù)往往不是那么理想撒蟀,遠比文檔要復(fù)雜得多。
不會構(gòu)造測試用例温鸽。 剛接觸測試時牙肝,很容易把做業(yè)務(wù)那套 “實現(xiàn) XXX 功能” 的想法代入測試。但測試的重點不在于實現(xiàn)功能嗤朴,而是構(gòu)造用例配椭。
沒有測試策略。 上面是 “技” 的難點雹姊,測試還有 “術(shù)” 的難點股缸。悶著頭肝測試并不高效,使用合適的測試策略遠比寫 10 個測試用例重要吱雏。
上面這些問題很容易讓人寫出難以維護和復(fù)雜的測試敦姻。只要業(yè)務(wù)一改,不僅要維護業(yè)務(wù)代碼還要維護測試代碼歧杏。
這時镰惦,你不禁感嘆:“測試真浪費時間”,最終放棄寫測試犬绒,直接開擺旺入。
好的測試會讓你獲得很高的代碼信心,而不好的測試則會嚴重拖垮項目開發(fā)。所以茵瘾,大家所厭惡的不應(yīng)該是測試本身礼华,而是那些維護性差的測試。
社區(qū)現(xiàn)狀
目前國內(nèi)關(guān)于前端測試的內(nèi)容非常糟糕拗秘,在我查找資料過程中就沒有一次是不坎坷的圣絮。首先是 Jest 的官網(wǎng)就不給力:
[圖片上傳失敗...(image-cc85de-1653009837996)]
先不說翻譯的正確性如何,單看這中文的內(nèi)容就讓人沒有想看下去的欲望雕旨,真希望 Jest 能找稍微專業(yè)一點的人來做翻譯扮匠。
由于官網(wǎng)的中文翻譯做的實在太爛,遇到問題幾乎在中文社區(qū)是找不到的凡涩。
再來說國內(nèi)關(guān)于測試的文章餐禁,我總結(jié)有三類:
-
入門類。 安裝 Jest突照,外加
expect(1 + 1).toEqual(2)
小例子 - API 說明書類。 類似于把 Jest 官網(wǎng)抄了一遍
- 理論類氧吐。 詳細說了測試是什么讹蘑、為什么、測試理論等筑舅,但最重要的 “怎么做” 沒有說
不是說這些文章不好座慰,只是這些文章大多數(shù)停留在最初級,看完還是不會怎么寫測試翠拣。就現(xiàn)狀來看國內(nèi)測試社區(qū)是有進步的版仔,至少有不少人在寫第三類了,要知道以前基本只有第一類文章误墓。
教程誕生
終于蛮粮,我看到了 React Testing Library 作者 Kent C. Dodds 的 博客 。
[圖片上傳失敗...(image-167cf8-1653009837996)]
他寫了很多關(guān)于測試思路的文章谜慌,每一篇都非常精彩然想。受他的啟發(fā),我覺得有必要把這些思想和技巧分享出來欣范,最終形成了這本小書变泄。這本小書要解決的就是 “怎么做” 這一步。
內(nèi)容
此次教程主要分享測試的思路為主恼琼,雖然以 React 為主要技術(shù)棧妨蛹,但使用其它技術(shù)棧的讀者依然可以流暢閱讀。
本教程是我結(jié)合了自身實踐晴竞、Kent C. Dodds 文章蛙卤、StackOverflow、Github Issue 以及別的博客最終總結(jié)出來的一套實踐指南噩死。
小書包含 3 部分:
- 基礎(chǔ)實踐表窘。 從 0 到 1 寫項目和測試典予,每一章會通過一個業(yè)務(wù)例子來分享測試難點、解法和思路乐严。
- 配套項目瘤袖。 如果你在某一步卡殼了,也可以參考這個項目昂验。
- 測試思路捂敌。 分享一些 Kent 的文章(中文翻譯)以及測試總結(jié)。
最后
我知道很多人看到這個貼子依然對測試嗤之以鼻既琴,可能覺得寫測試就是扯淡占婉、浪費時間的,也可能你已經(jīng)對國內(nèi)的 “短平快” 失望了甫恩,這個我完全能理解逆济。
但我相信總有人愿意寫測試的,我希望在他們學習如何寫測試時能給一個方向和引導磺箕。
如果你喜歡我的分享奖慌,可以來一波一鍵三連,點贊松靡、在看就是我最大的動力简僧,比心 ??