跳到主要內容

十分鐘搞懂Node.js Unit Test (單元測試), 使用 Mocha 和 Chai


前言

基本上Unit test的好處多多, 我們可以專注在新開發的功能上測試, 而不用浪費時間測到一些不相關的部分, 除此之外, 將來在除錯時也容易找到問題

目前有許多套件可以輔助我們做Unit test, 今天著重在如何使用mocha, chai 

 建立Test資料夾, 檔案結構如下 

/node_modures
app.js 
package.json 
/test

下載mocha, chai


$ npm install mocha --save-dev
$ npm install chai --save-dev


修改package.json

加入以下設定


"scripts": {
 "test": "mocha   --exit"
  },



--exit 這個flag的作用是, 讓mocha執行完測試後可以自動結束, 這個flag可加也可以不加, 不加的話有可能在跑CICD的Pipeline時會被mocha給卡住


當我們使用npm test 的時候, 就會把 mocha 模組叫起來做單元測試

改完之後的package.json如下:


{
  "name": "my-simple-test",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "mocha   --exit"
  }, 
... 

  

test.js

在/test資料夾下建立test.js, 此時檔案架構如下

/node_modures
app.js 
package.json 
/test
     test.js
我們可以想要測的部分寫在 it 的 callback function裡, 然後再使用assert去比對結果是否符合預期



開始測試 

$ npm run test

================ 分隔線 ================ 分隔線  ========================

補充:

如何測試指定的function

如果不想要跑完全部的測試, 只想針對部分的function, 我們可以用

$ npm test -- -g "check if function a() return true"

mocha 會去找測試描述中有符合"check if function a() return true"字串的項目執行測試

VS Code 中斷點除錯

將以下的內容添加到launch.js 中

{
  "name": "mocha",
  "type": "node",
  "request": "launch",
  "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
  "stopOnEntry": false,
  "args": ["--no-timeouts", "--colors"], //you can specify paths to specific tests here
  "cwd": "${workspaceRoot}",
  "runtimeExecutable": null
}



接下來, 按F5之後程式就會停在我們先前設的中斷點上 ...

留言