精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇了解TDD 的原理和使用場景

開發 前端
如果我只是寫點試驗代碼片段(我經常這么干)或者只是亂寫寫代碼,那我肯定不會用 TDD 的。只有在項目在往正道發展時,我才會添加對應的測試。

前言

哈嘍,大家好,我是海怪。

說起前端測試,有一個東西肯定是逃不掉的,那就是 TDD —— 測試驅動開發。很多前端大佬也都非常喜歡用 TDD 的模式來編程。因為它不僅可以通過測試保障代碼質量,還能創造一個良好的開發環境來提高開發效率。

然而,有些同學會對此嗤之以鼻,覺得先寫測試再寫業務不是浪費了那 50% 的工時么?根本沒時間寫業務代碼呀。我覺得這部分同學其實并沒有搞清楚 TDD 的適用場景以及它要解決的問題。正好 Kent C. Dodds[1] 在他這篇 《When I follow TDD》[2] 里聊了關于 TDD 的一些想法和思路,今天就把這篇文章分享給大家~

翻譯中會盡量用更地道的語言,這也意味著會給原文加一層 Buf,想看原文的可點擊 這里[3]。

正片開始

測試驅動開發(TDD)包含了 3 個步驟,一般也被稱為 “紅,綠,重構循環”。

下面是它的工作原理:

  • ?? 紅色部分:在你還沒添加新功能前先寫一個測試。然后你會得到一個失敗的測試用例(會看到 “紅色” 的報錯信息)。
  • ? 綠色部分:慢慢添加業務代碼來讓測試通過(看到 “綠色” 成功信息)。
  • ?? 重構部分:再回過頭看審視自己的代碼,把它重構成高可讀性和高維護性的代碼(這一步最棒的地方在于之前寫的測試用例會告訴你在重構時是否會破壞現有邏輯)。
  • ?? 重復:這就是個循環,反正 ?? 一直走下去,直到寫完這個功能

在真實使用上,這個方法可能有所不同,有些人還會把 TDD 作為自己的開發信仰。而我會站在更實用的角度上使用 TDD,只在一些我覺得有好處的情況下使用它。

那么問題來了:“什么時候用 TDD 才是合理的呢?”。這其實很依賴你的開發直覺。坦率地說,這跟你用 TDD 的感覺和經驗有很大關系。當然,也有一些我經常會用 TDD 的經典場景。

修 Bug 場景

當在修 Bug 時,我喜歡在修復之前先寫一個測試來復現它。這么做可以給我帶來非常大的信心,讓我在通過測試后馬上知道是什么原因導致的這個 Bug,這樣一來,我就知道我實際上已經修復了這個錯誤,而不僅僅是圍繞這個問題進行了測試。

在維護我比較關注的軟件時,90% 的時間都遵循這種方法(并因此添加了測試)。特別是在我的開源項目中就這么做的。這是這類測試的一個例子。

要修 Bug 么?試試 TDD 吧。

純函數場景

我不會測所有的工具純函數(對大部分純函數我會用集成測試來覆蓋),不過,如果某個工具函數有足夠的復雜度,而且必須要用隔離的單測來測,那這也是一個使用 TDD 的絕佳機會。一般這類函數,你代碼里都會有定義比較清晰的輸入和輸出結構。

我想大多數人都經歷過這樣的情況(就算現在沒有,以后會也有的)。以前我在 PayPal 的時候,我要在用戶輸入對應的金額準備轉賬時做格式轉換。由于要考慮貨幣的精度,這個處理邏輯比你相像得要復雜得多(有的貨幣根本沒有小數概念)。對貨幣金額做格式化就是一個做 TDD 很好的例子,因為輸入和輸出都是很容易想出來的。

另一個很好的例子就是 我的項目 rtl-css-js 的測試(這也是開源的)。

要準備寫純工具函數么?試試 TDD 吧。

定義良好的交互場景

直到我創建了 Testing Library[4] 后,我才認為用戶界面的 TDD 在 Web 上確實可行,因為:

當你在 測代碼實現細節 時,做 TDD 是沒有意義的。

老實說,如果你在測代碼實現細節,做任何測試都是沒有意義的(它們只會拖慢你的速度)。TDD 一部分的意義在于幫助你思考:如何從在不考慮細節情況下從外部構建你的應用,這樣你就會在設計項目時盯住你的主要目標,而不會鉆入牛角尖。當你知道要做什么而不是想知道要怎么做的時候,它會對你有所幫助。

在 Testing Library 出來前的一些流行工具(所有測試工具種類),它能夠讓你(鼓勵你)去測實現細節。如果這時你要用 TDD,你就得知道(比如)你要創建一個叫 makeDonation 的私有方法,調用時,它會分別傳入(而不是傳反) amount 和 currency 兩個參數。這也導致人們總感覺做 TDD 純屬浪費時間,只是走走過場。

不過現在 Testing Library 可以讓你關注于用戶交互,而不是實現細節,你可以在設計和定義好用戶交互后使用 TDD。

幾年前我錄的一個視頻, 里面用 Login 組件展示了這樣的方法。這已經是幾年前的了,現在應該更容易實現。

要準備設計一個定義明確的 UI 么?試試 TDD 吧。

總結

到這里說差不多了。我敢肯定,其他人在做 TDD 實踐時也有他們自己覺得合理的場景,這也挺好的。

如果我只是寫點試驗代碼片段(我經常這么干)或者只是亂寫寫代碼,那我肯定不會用 TDD 的。只有在項目在往正道發展時,我才會添加對應的測試。順便說一下,我在使用類型檢查工具時也是這么干的。這也是我一直遵循的 抽象思路。

寫測試,添加類型定義,對代碼做抽象都是對你項目的投資。如果你不確定創建的東西是否會長期存在,那么進行這些投資是沒有意義的。如果你不確定在你完成時你創造的東西最終會變成什么樣,那么這些投資也可能是不明智的。還有就是這些錯誤的投資所造成的沉沒成本最終也會淪為一些不優雅的解決方案,最終會影響你的一些判斷。

好了,這篇外文就給大家帶到這里了。文章里主要講了 3 種使用 TDD 的場景:修 Bug 時,寫純函數時,以及設計 UI 時。我感覺在寫純函數(數據轉換),以及寫接口時(Node 端開發)時用的比較多,修 Bug 嘛,實際情況都是業務 Bug,要用測試復現是比較麻煩的。設計 UI 前寫測試也是比較麻煩的。總之,大家應該都會有自己使用 TDD 的場景,找到適合自己的就好。需要注意的是,千萬別提前做優化,特別是你還不確定你的項目要發展到什么程度時。

責任編輯:武曉燕 來源: 寫代碼的海怪
相關推薦

2021-08-11 07:02:21

npm包管理器工具

2022-02-18 08:54:21

docker操作系統Linux

2021-08-26 05:27:08

Base64 字節流算法

2021-12-30 09:38:51

DDoS攻擊防范

2024-11-27 08:15:50

2022-04-13 21:19:56

Prometheusruler 組件

2022-10-26 07:39:36

MVCC數據庫RR

2022-12-19 08:14:30

注解開發配置

2021-05-20 06:57:16

RabbitMQ開源消息

2019-06-06 15:22:07

SparkShuffle內存

2019-07-26 15:01:42

SparkShuffle內存

2021-07-14 10:08:30

責任鏈模式加工鏈

2021-07-10 09:02:42

編程語言 TypeScript

2021-10-28 19:15:02

IPUARM

2020-10-09 08:15:11

JsBridge

2018-12-27 09:28:08

Consul服務Server

2018-05-16 15:26:43

數據庫MySQL主從復制

2021-07-14 23:55:19

ApiNodeAddon

2021-07-02 08:51:28

Vite線程項目

2022-05-05 07:40:07

maskCSS
點贊
收藏

51CTO技術棧公眾號

超碰97在线资源站| 久久久久久国产精品| 一本久道综合色婷婷五月| 成人免费在线电影| 国产精品18久久久久| 午夜剧场成人观在线视频免费观看| 亚洲永久无码7777kkk| 亚洲人免费短视频| 亚洲黄色在线视频| 日韩精品无码一区二区三区| 国产精品系列视频| 99视频精品| 久久精品福利视频| 玖草视频在线观看| 91丨精品丨国产| 狠狠躁夜夜躁人人爽超碰91| 国产高潮呻吟久久久| 天堂网在线观看视频| 久久99久久99小草精品免视看| 国内精品久久久久久久| 国产精品69久久久久孕妇欧美| 97一区二区国产好的精华液| 欧美网站一区二区| 久久久999免费视频| 黄色网址免费在线观看| 久久久久免费观看| 国产精品成人观看视频免费| 亚洲图片欧美在线| 久久国产精品久久w女人spa| 欧美激情小视频| 中文字幕乱码av| 猛男gaygay欧美视频| 欧美成人免费网站| 国产福利在线免费| 欧美www.| 一本到三区不卡视频| 人妻少妇精品无码专区二区 | 日韩av电影天堂| 国产69精品久久久| 麻豆成人在线视频| 亚洲精品2区| 少妇激情综合网| 色欲AV无码精品一区二区久久| 精品亚洲免a| 337p日本欧洲亚洲大胆色噜噜| 性生活一级大片| 国产精久久久| 制服丝袜在线91| 在线播放免费视频| 国产精品亚洲欧美日韩一区在线| 欧美日韩精品三区| 中文字幕第36页| 欧美va在线| 在线观看日韩电影| 国产又大又黄又粗的视频| 美女18一级毛片一品久道久久综合| 91超碰caoporn97人人| 影音先锋黄色资源| gogo人体一区| 欧美成人精品高清在线播放| aaaaaaaa毛片| 视频一区日韩| 精品日本一线二线三线不卡| 色男人天堂av| 99re8这里有精品热视频8在线| 欧美一区二区三区婷婷月色 | 久久久久在线| 国产成人精品最新| 中文区中文字幕免费看| 免费观看成人av| 国产一区二中文字幕在线看| 国产欧美熟妇另类久久久 | 51蜜桃传媒精品一区二区| 99视频免费看| 成人丝袜视频网| 蜜桃传媒视频麻豆第一区免费观看 | 高清电影在线免费观看| 精品成人久久av| 日韩av一二三四| 欧美一区二区三区婷婷| 欧美一区三区四区| 中文字幕在线永久| 成人免费电影网址| 久久成人亚洲精品| 亚洲精品77777| 日本欧美久久久久免费播放网| 国产一区二区丝袜| 六月婷婷中文字幕| 国产调教视频一区| 日本成人在线不卡| 依依综合在线| 91精品国产91久久久久久最新毛片 | 日韩精品在线观看网站| 91狠狠综合久久久久久| 在线中文字幕第一区| 97超级碰在线看视频免费在线看| 亚洲精品一区二三区| 国产精品1024| 日本视频精品一区| 美女精品导航| 在线观看国产一区二区| 国产无套精品一区二区三区| 久久91精品| 欧美精品国产精品日韩精品| 日韩中文字幕高清| 国产91精品入口| 亚洲精品自在在线观看| rebdb初裸写真在线观看| 欧美日韩精品一区二区三区四区 | 一级黄色大片免费观看| 成人网在线免费视频| 亚洲人成网站在线观看播放| 蜜桃视频m3u8在线观看| 日韩一区二区不卡| www.日本高清视频| 亚洲一区久久| 成人综合色站| 国产在线看片| 欧美手机在线视频| 久久久视频6r| 性久久久久久| 国产伦精品一区二区三区四区视频| 在线看黄色av| 欧洲亚洲精品在线| 右手影院亚洲欧美| 夜夜爽av福利精品导航| 不卡视频一区二区三区| 麻豆视频在线播放| 欧美色视频在线观看| 日韩一级视频在线观看| 亚洲每日更新| 国产伦精品一区二区三区视频孕妇 | 久久久久国产精品人| 久久亚洲精品无码va白人极品| 婷婷久久综合九色综合99蜜桃| 亚洲色图国产精品| 黄色免费av网站| 99久久伊人久久99| 免费在线观看亚洲视频| 国内毛片久久| 国内精品免费午夜毛片| 亚洲欧美激情国产综合久久久| 日韩毛片在线免费观看| 欧美美女一级片| 久久密一区二区三区| 国产精品亚发布| 岛国在线视频免费看| 色婷婷精品大在线视频| 国产交换配乱淫视频免费| 中文一区二区| 欧美午夜精品久久久久免费视| 高清精品在线| 精品小视频在线| 免费黄色网址在线| 久久久不卡网国产精品二区| 国产a视频免费观看| 精品久久久久久久久久久aⅴ| 日本中文字幕不卡免费| 成人在线二区| 欧美日产国产精品| 顶臀精品视频www| 国产成人精品三级| 欧美精品一区二区三区三州| 美女福利一区| 91高清免费视频| 国产精品免费播放| 欧美日韩黄色影视| wwwav国产| 成人国产亚洲欧美成人综合网| 激情伊人五月天| 国产探花在线精品| 国产一区二区色| 毛片网站在线看| 亚洲女人初尝黑人巨大| 在线观看国产小视频| 亚洲色大成网站www久久九九| 精品国产乱码久久久久夜深人妻| 影音先锋中文字幕一区二区| 久久综合一区二区三区| 日韩毛片免费看| 欧美黄色免费网站| 黄色网址在线播放| 欧美一卡2卡三卡4卡5免费| 激情五月色婷婷| 国产精品乱人伦一区二区| 男人添女人荫蒂国产| 久久久久久婷| 黄色片免费在线观看视频| 日韩大片在线免费观看| 国产精品自在线| 成年人视频免费在线播放| 亚洲天堂男人天堂| 精品久久久久成人码免费动漫| 偷拍一区二区三区四区| 日本黄色录像视频| 91视频一区二区| 亚洲无在线观看| 国产欧美不卡| 男同互操gay射视频在线看| 自拍自偷一区二区三区| 亚洲一区亚洲二区| 中文另类视频| 97久久久久久| a视频在线播放| 国产一级揄自揄精品视频| 免费a视频在线观看| 欧美精品电影在线播放| 丁香社区五月天| 亚洲激情五月婷婷| 日本午夜精品视频| 久久久国产精华| 一起草在线视频| 国产91精品精华液一区二区三区| 我要看一级黄色大片| 亚洲影音一区| 少妇av一区二区三区无码| 欧美一区久久| 一区二区三区在线观看www| 要久久电视剧全集免费| 国产伦精品一区二区三区免| 精品国产乱码久久久久久樱花| 国产精品对白刺激| 热三久草你在线| 久久久伊人欧美| 亚洲欧美成人影院| 久久人人爽亚洲精品天堂| 久久这里精品| 日韩精品在线看| 五月婷婷六月丁香| 亚洲第一区第一页| 丰满人妻一区二区三区免费视频| 欧美狂野另类xxxxoooo| 自拍偷拍色综合| 91久久精品日日躁夜夜躁欧美| 国产成人无码精品| 午夜久久久久久| 国产亚洲精久久久久久无码77777| 亚洲欧美在线aaa| 久艹在线观看视频| 成人欧美一区二区三区1314| 日日碰狠狠添天天爽| 中文字幕一区二区在线播放 | 久久久综合色| 中文字幕欧美人与畜| 欧美3p在线观看| 中文字幕中文字幕99| 五月婷婷六月综合| 穿情趣内衣被c到高潮视频| 午夜精品毛片| 最近中文字幕免费mv| 欧美va亚洲va日韩∨a综合色| 日本xxx免费| 国产精品啊v在线| 日韩欧美精品免费| 在线不卡欧美| 欧洲av无码放荡人妇网站| 手机精品视频在线观看| 国产高清视频网站| 国产一区二区精品久久99| 特种兵之深入敌后| 国产91富婆露脸刺激对白| 少妇户外露出[11p]| 日本一区二区在线不卡| 精品一区二区在线观看视频| 亚洲私人黄色宅男| av资源吧首页| 91国偷自产一区二区三区观看 | 久久99久久久久久久久久久| 欧美xxxxxbbbbb| av一区二区三区在线| 久久只有这里有精品| 中文字幕一区二区三区不卡在线 | 在线不卡免费av| 亚洲va天堂va欧美ⅴa在线| 亚洲福利小视频| 国产精品一级伦理| 欧美超级乱淫片喷水| av中文在线资源库| 国产噜噜噜噜久久久久久久久| 欧美影院精品| 蜜桃免费一区二区三区| 四虎成人精品永久免费av九九| 99久久免费观看| 老色鬼久久亚洲一区二区| 日韩欧美中文视频| 久久综合色鬼综合色| 日韩激情小视频| 欧美视频中文字幕在线| 国产又大又粗又硬| 日韩高清中文字幕| 搞黄网站在线观看| 国产91精品久久久久| 99久久久国产| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 91香蕉视频在线播放| 高潮白浆女日韩av免费看| 一级淫片免费看| 日韩精品黄色网| 在线看女人毛片| 国产精品第2页| 大桥未久女教师av一区二区| 相泽南亚洲一区二区在线播放 | 日本免费观看网站| 不卡av电影在线播放| 一区二区国产精品精华液| 色成人在线视频| 欧美一区二区在线观看视频| 一个色综合导航| 第一av在线| 亚洲一区二区三区sesese| 久久不卡国产精品一区二区| 欧美亚洲色图视频| 国内精品在线播放| 国产三级在线观看完整版| 懂色av影视一区二区三区| 精品国产av一区二区| 伊人一区二区三区久久精品| 国产美女高潮在线观看| 99电影网电视剧在线观看| 国产高清一区| 视频在线观看免费高清| 国产三级精品视频| 亚洲精品中文字幕乱码三区91| 欧美mv日韩mv国产网站app| 精品国产白色丝袜高跟鞋| 国产精品福利在线观看网址| 日韩动漫一区| 日本韩国欧美在线观看| 成人在线一区二区三区| 青青草国产在线观看| 3atv在线一区二区三区| 一级日本在线| 国产欧美日韩丝袜精品一区| 精品久久久久久久久久久aⅴ| 男人天堂网视频| 91免费观看在线| 亚洲高清毛片一区二区| 日韩av综合中文字幕| 国产拍在线视频| 91九色露脸| 午夜亚洲福利| 国产a√精品区二区三区四区| 亚洲乱码国产乱码精品精98午夜 | 日韩精品极品视频免费观看| 黄色激情在线播放| 久久久亚洲综合网站| 国产欧美短视频| 91精品人妻一区二区| 色综合久久88色综合天天6 | 中文字幕日本人妻久久久免费 | 羞羞视频在线免费国产| 国产a一区二区| 国语自产精品视频在线看8查询8| 国产精品嫩草69影院| 亚洲福利视频一区| 午夜小视频在线播放| 日韩av不卡电影| 成人在线免费观看网站| 激情黄色小视频| 亚洲精品一二三| 日本高清视频免费看| 日韩免费在线观看视频| 日本一区二区免费高清| 亚洲妇熟xx妇色黄蜜桃| 一区二区久久久| 色在线免费视频| 国产精品日韩在线播放| 婷婷丁香综合| 亚洲图片欧美另类| 一本一道久久a久久精品| av大片在线播放| 91精品国产高清久久久久久91裸体| 国内精品99| 老牛影视av老牛影视av| 欧美日韩日日摸| 手机av在线播放| 免费av在线一区二区| 麻豆成人91精品二区三区| 久久精品视频免费在线观看| 亚洲国产精品久久久久| 欧美成人精品三级网站| 在线视频一二三区| 91小视频免费观看| 在线免费观看视频网站| 欧美精品九九久久| 成人av国产| 黄色性视频网站| 欧美影视一区二区三区| 麻豆福利在线观看| 日本不卡二区| 国产成人av一区二区| 精品国产一区二区三区四| 久久精品一本久久99精品| 玖玖玖免费嫩草在线影院一区| 超碰在线97免费| 亚洲va欧美va人人爽| 最近高清中文在线字幕在线观看| 国产精品一 二 三| 激情文学综合丁香| 国产91精品一区|