精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

午夜精品成人av| 五月婷婷丁香花| 欧美在线看片| 亚洲精品国产精品国自产观看浪潮| 日韩欧美一区二区三区四区| 一级特黄aaa大片在线观看| 欧美成人高清| 亚洲系列中文字幕| 一级黄色电影片| 欧洲精品二区| 久久夜色精品一区| 亚洲va久久久噜噜噜| 亚洲精品男人的天堂| 久久精品青草| 欧美一区二区三区日韩视频| 日本特级黄色大片| 无码精品视频一区二区三区| 久久99国内精品| 久久久精品国产亚洲| 91aaa精品| 影视一区二区三区| 亚洲超碰精品一区二区| 精品欧美日韩在线| 天堂网中文字幕| blacked蜜桃精品一区| 精品国产三级a在线观看| 天天干天天操天天玩| а√在线天堂官网| 久久蜜桃香蕉精品一区二区三区| 日本午夜在线亚洲.国产| 久久视频免费看| 国产精品久久久久久影院8一贰佰| 91 com成人网| 欧美午夜性生活| 小草在线视频免费播放| 午夜日韩在线电影| 日b视频免费观看| 国产视频中文字幕在线观看| 亚洲国产精品成人综合色在线婷婷 | 一道本成人在线| 亚洲精品乱码视频| 性网爆门事件集合av| 久久激五月天综合精品| 国产精品扒开腿爽爽爽视频| 日韩一区二区视频在线| 欧美亚洲精品在线| 精品一区精品二区| 精品人妻互换一区二区三区| 欧美成a人免费观看久久| 欧美成人艳星乳罩| caopor在线| 国产成人夜色高潮福利影视| 精品免费日韩av| 激情综合激情五月| 久久97久久97精品免视看秋霞| 欧美综合在线视频| av在线观看地址| xxx.xxx欧美| 午夜电影网亚洲视频| 欧美成人高潮一二区在线看| 91超碰国产在线| 欧美日韩中文字幕在线视频| 公共露出暴露狂另类av| 黄色视屏免费在线观看| 亚洲精品视频在线观看免费| 伊人再见免费在线观看高清版| 猫咪在线永久网站| 日本一区二区免费在线观看视频| 精品综合久久| 户外极限露出调教在线视频| 亚洲国产成人自拍| 一区二区三区四区免费观看| 色呦呦网站在线观看| 亚洲成人激情av| 中文字幕乱码人妻综合二区三区| 另类视频在线| 欧美色videos| 中文字幕有码av| 久久国产精品免费一区二区三区| 欧美日韩亚洲综合一区| 色综合av综合无码综合网站| 成人全视频免费观看在线看| 欧美一区二区三区白人| 亚洲黄色a v| 在线人成日本视频| 欧美日韩午夜影院| 国产69视频在线观看| 精品产国自在拍| 久久人人爽人人爽人人片亚洲| 免费一级黄色录像| 欧美精品1区| 午夜精品久久久久久99热| 一级黄色av片| 国产suv一区二区三区88区| 欧美成人综合一区| av片哪里在线观看| 一本久道久久综合中文字幕| 日韩av加勒比| 久久不见久久见国语| 久久久精品国产| 秋霞精品一区二区三区| 国产精品一区免费在线观看| 免费久久99精品国产自| 欧美一区二区三区少妇| 亚洲另类色综合网站| 青草全福视在线| 日韩电影av| 欧美成人一区二区三区片免费| 日本少妇一区二区三区| 国产欧美日韩| 久久免费国产视频| 国产精品亚洲lv粉色| 久久蜜桃一区二区| 亚洲不卡1区| 国产直播在线| 精品欧美一区二区三区精品久久| 亚洲av人人澡人人爽人人夜夜| 97一区二区国产好的精华液| 一本色道久久88精品综合| 欧美激情精品久久久久久免费| 一区二区三区在线| 国产精品久久久久久久久久新婚| 国产精品国产三级国产普通话对白 | 中文字幕第一区综合| 男人天堂av片| 伊伊综合在线| 亚洲成色999久久网站| 成人做爰视频网站| 日本网站在线观看一区二区三区 | 国产亚洲精品精华液| 日韩激情视频一区二区| 日韩在线激情| 中文综合在线观看| 一区二区视频网站| 国产亚洲精品精华液| 日韩少妇内射免费播放18禁裸乳| 一二区成人影院电影网| 亚洲免费视频在线观看| 国产成人在线播放视频| 国产成人日日夜夜| 国内自拍中文字幕| 亚洲第一二三四区| 亚洲欧洲日韩国产| 69亚洲精品久久久蜜桃小说 | av在线网址导航| 欧美美女视频| 国产精品久久久亚洲| 国产在线视频网站| 欧美性猛交xxxx黑人交| 色综合99久久久无码国产精品| 欧美1区视频| av成人在线电影| 爱情岛论坛亚洲品质自拍视频网站| 欧美丝袜丝nylons| 少妇视频在线播放| 精品亚洲成a人| 欧美日韩大片一区二区三区| 羞羞视频在线观看免费| 欧美不卡一二三| 国产第一页在线播放| 99精品视频免费在线观看| 日韩在线综合网| 国产精品欧美三级在线观看| 国产精品日日做人人爱| 免费**毛片在线| 欧美一级日韩一级| 日韩字幕在线观看| 国产婷婷一区二区| 天天干天天色天天干| 在线国产一区| 久久久久免费网| 成人精品一区二区三区电影| 久久综合久久美利坚合众国| 亚洲精品免费在线观看视频| 精品久久久久久国产| 精品人妻二区中文字幕| 亚洲狼人精品一区二区三区| 欧美一区二区三区四区五区六区| 91制片在线观看| 亚洲女人天堂色在线7777| 中文字幕在线观看国产| 亚洲自拍偷拍网站| 一区二区黄色片| 国产一区二区三区日韩| 大肉大捧一进一出好爽视频| 欧美中文字幕一区二区| 97久久天天综合色天天综合色hd | 欧美18免费视频| 日韩av不卡在线| 久操视频在线| 亚洲国产精品久久久久秋霞不卡 | 欧美啪啪一区| 欧美亚洲免费高清在线观看| 高清久久一区| 欧美在线观看日本一区| 国产在线一区二区视频| 亚洲精品资源美女情侣酒店| 国产免费不卡av| 日韩欧美综合在线视频| 国产精品久久久精品四季影院| 韩国成人精品a∨在线观看| 少妇av一区二区三区无码| 久久视频国产| 乱一区二区三区在线播放| 国产中文欧美日韩在线| 青青久久av北条麻妃海外网| av网站免费在线观看| 尤物99国产成人精品视频| 日韩中文字幕免费在线观看| 欧美日韩国产美| av毛片在线免费观看| 亚洲成人一二三| www.毛片com| 国产精品丝袜在线| 国产精品亚洲无码| 成人免费av网站| 久久久精品视频国产| 日韩电影一二三区| 日本三级免费网站| 伊人激情综合| 国产精品视频网站在线观看| 亚洲精品二区三区| 亚洲精品不卡| 精品一级视频| 国产日韩在线视频| 日韩精品一区二区三区av| 91av国产在线| av影片免费在线观看| 日韩亚洲欧美一区二区三区| 伊人色综合久久久| 日本高清不卡视频| 欧美日韩精品在线观看视频 | 国产精品一区亚洲| 97超碰人人澡| 好看不卡的中文字幕| 欧美日韩综合另类| 日韩av网址大全| 精品国产乱码久久久久| 久久超级碰碰| 精品中文字幕一区| 亚洲瘦老头同性70tv| 久久久久久久有限公司| 妖精一区二区三区精品视频| 成人午夜黄色影院| 久久日本片精品aaaaa国产| 国产精品99久久99久久久二8| 高潮毛片在线观看| 久久久av免费| 成人在线观看亚洲| 欧美日韩国产成人高清视频| av网站网址在线观看| 欧美片一区二区三区| 蜜臀av国内免费精品久久久夜夜| 亚洲免费电影在线观看| 国产在线自天天| 日韩在线免费视频| 八戒八戒神马在线电影| 欧美激情高清视频| 成人三级高清视频在线看| 91精品国产91久久久久福利| 涩涩视频在线免费看| 日韩美女视频中文字幕| 91九色美女在线视频| 91精品国产91久久久久久不卡| av网址在线| 北条麻妃一区二区三区中文字幕| 飘雪影院手机免费高清版在线观看 | 成人观看免费完整观看| 日韩va欧美va亚洲va久久| 欧美日韩亚洲一| 免费成人你懂的| 人妻巨大乳一二三区| 99久久综合狠狠综合久久| 国产jjizz一区二区三区视频| av在线不卡电影| 国产xxx在线观看| 久久亚洲一区二区三区四区| 免费看黄色三级| 亚洲另类在线一区| 亚洲午夜18毛片在线看| 欧美日韩国产综合久久 | 色屁屁一区二区| 久久国产视频一区| 欧美三级中文字幕在线观看| 精品国产av一区二区三区| 亚洲精品国产精品乱码不99按摩| 六月婷婷综合网| 国产亚洲a∨片在线观看| 国产在线观看黄| 欧美另类69精品久久久久9999| 国产乱色在线观看| 欧美性受xxxx黑人猛交| 黄色亚洲网站| 91九色视频在线观看| 国产不卡一二三区| 男人的天堂avav| 日本不卡免费在线视频| 欧美成人乱码一二三四区免费| 蜜臀a∨国产成人精品| 久久久久无码国产精品一区李宗瑞 | 亚洲综合视频网| 一区二区小视频| 亚洲免费一在线| 成人精品一区二区三区免费| 欧美大秀在线观看| 欧美系列精品| 欧美高清性xxxxhdvideosex| 欧美日韩三级| 免费看日本毛片| 国产伦精品一区二区三区视频青涩| 麻豆网站免费观看| 欧美激情综合网| 草久视频在线观看| 欧美成人精品福利| 麻豆电影在线播放| 国产精品久久久久久久久男| 少妇久久久久| 人妻无码久久一区二区三区免费| 亚洲国产99| 老头吃奶性行交视频| 99精品一区二区三区| 朝桐光av在线| 欧美丰满一区二区免费视频| 韩国精品视频| 欧洲精品在线视频| 日韩极品在线| 一区二区视频在线播放| 日韩高清中文字幕一区| 一区二区黄色片| 一区二区三区加勒比av| 国产伦一区二区| 日韩有码在线电影| 欧美成人黄色| 亚洲国产一区在线| 强制捆绑调教一区二区| 国产清纯白嫩初高中在线观看性色| 91亚洲精华国产精华精华液| 国产精品99精品| 欧美日韩亚洲国产综合| 三级网站免费观看| 久久久久久这里只有精品| av日韩精品| 很污的网站在线观看| 成人av影院在线| 你懂得在线观看| 欧美情侣在线播放| 成人高清免费在线| 成人激情直播| 亚洲精品欧洲| 成人性生交大免费看| 欧美日韩亚洲综合一区二区三区| 天堂在线中文资源| 国产成人短视频| 麻豆成人入口| 亚洲国产精品久久久久爰色欲| 成人自拍视频在线观看| 日本在线观看视频网站| 欧美一区二区免费观在线| 日本色护士高潮视频在线观看| 国产精品美腿一区在线看| 色婷婷热久久| 无码人妻一区二区三区免费n鬼沢| 中文文精品字幕一区二区| 亚洲最新av网站| 国产亚洲欧美视频| 青青伊人久久| www成人免费| 2020国产精品自拍| 日本中文字幕网| 亚洲天堂男人天堂| 久久久精品区| 成年人免费观看的视频| 国产精品1区2区| 中文字幕超碰在线| 国产丝袜视频一区| 精品国产黄a∨片高清在线| 日日噜噜夜夜狠狠久久丁香五月| 美女网站色91| 国产成人一区二区在线观看| 欧美精品自拍偷拍动漫精品| 欧美色图天堂| 日本一区不卡| 丁香亚洲综合激情啪啪综合| 麻豆成人免费视频| 久久久精品久久久| 亚洲色图美女| 制服.丝袜.亚洲.中文.综合懂| 亚洲欧洲另类国产综合| 在线观看亚洲一区二区| 欧美激情三级免费| 欧美日韩一区二区综合 | 成年人看的免费视频| 欧美不卡激情三级在线观看| 亚洲mmav| 日本wwwcom| 亚洲欧洲成人自拍| 欧美人体大胆444www| 国产精品v欧美精品v日韩精品| 亚洲黄色影院| 91高清免费观看|