Node.js 單元測試之我要寫測試
故事是這樣的:小明是一個前端工程師,近期因為個人興趣以及工作上的需要,開始做 Node.js 相關的項目。一個多月過去了,小明基于 Koa 搭出了自己的第一個 Node.js web 應用,在這個過程中,小明也遇到了很多的問題:
- 如何在上線時保證代碼完全沒問題?
- 每次增加功能時如何保證之前的功能是可用的?
- 隨著代碼增多,沒有勇氣和信心去重構代碼
面對以上這些問題,小明作為一個前端工程師,慣性思維就是每次部署前先在頁面上到處點點,然而一個機智的程序員怎么能把大好時間浪費在這些重復勞動上呢,于是小明就去咨詢了組里的 Node.js 大牛老王,話說大牛畢竟是大牛,只是高冷的回復了一句:「單元測試」。
于是小明果斷去谷歌搜索了「Node.js 單元測試」,毫無意外,一大堆的介紹和教程文章,粗略讀了這些文章之后,小明得出了一些關于 Node.js 單元測試的結論,整理如下:
單元測試類型
單元測試分為 TDD(測試驅動開發)和 BDD(行為驅動開發)兩種類型,對于這兩種類型的比較,小明看的也是云里霧里,感覺單是介紹 TDD 和 BDD 就可以寫兩篇論文了。不過,選擇哪種類型不還是得看代碼怎么寫嘛,于是小明對比了兩種類型的代碼:
// TDD suite('Array', function() { setup(function() { }); test('equal -1 when index beyond array length', function() { assert.equal(-1, [1,2,3].indexOf(4)); }); }); // BDD describe('Array', function() { before(function() { }); it('should return -1 when no such index', function() { [1,2,3].indexOf(4).should.equal(-1); }); });
在對比了兩種類型的語法之后,小明毫不猶豫的選擇了 BDD,因為 BDD 的語法更加符合人類的思考方式,或者更加語義一點。
單元測試框架
測試框架的職責即提供一套 API 幫助開發者更方便的測試代碼。在 JavaScript 社區有兩個比較成熟的單元測試框架:jasmine 和 Mocha, 聚焦到 Node.js 社區的話,諸如 koa, express 等多數開源項目使用的都是 Mocha. 小明自然是打開 Mocha 的官網探個究竟,不看不知道,一看嚇一跳:
TDD/BDD 語法,異步方法測試,單測前置后置的 hook 等等,堪稱完美。來一個簡單的示例吧:
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!