iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 21
0
Modern Web

從零開始認識 Node.js系列 第 21

[Day 21] 動手篇 - Please give me Mocha (1)

TDD

本文開始前

TDD 是一個觀念,實踐後成了常聽見的 Unit Testing 等,之前我寫過一篇以 Express 為例的教學文,也再公司內外分享過,因此這篇會以 如何寫 Koa 的 Unit Testing 為主軸,若想了解 TDD 、 Express 寫 Unit Testing 的方式,可以從下方 Link 取得,

若了解一開始的圖可以注意, Test 在第一個,之後每一個階段還是會回到 Test ,而這篇提得 Unit Testing ,只占前二個步驟 - Test 和 Code ;若實作進行得順利,之後會將這個 Line Bot 開發、 PR 、 Deploy 都透過 CI / CD 的服務進行。

正式開始

延續上一篇內容 ( 這裡 ) ,出來一個有 Router 的 Koa ,

  • Koa 建立的 Server

    const koa = require('koa');
    const app = koa();
    
    const router = require('koa-router');
    router.get('/', function *() {
      this.body = 'Hello World!';
    })
    app.use(router());
    
    app.listen(3000, function () {
      console.log('Example app listening on port 3000!')
    });
    
  • 測試需要的工具

    • mocha
      • npm i mocha --save-dev / yarn add mocha --dev
      • 測試的發動機
      • 可以安裝在 Global 裡
    • should
      • npm i should --save-dev / yarn add should --dev
      • 驗證資料正確性
    • supertest
      • npm i supertest --save-dev / yarn add supertest --dev
      • 模指 Client 送 request

    後面加 dev 的目的是這些工具在 Production 時是不需要安裝、使用,只要開發階段會使用到。

  • 建立 測試 的資料夾
    我習慣會建立一個 test 的資料夾 ( Mocha 預設也會抓這個資料夾的內容 ) ,而基本資料夾配置提供給需要的人參考

    - test
        - config     // mocha 啟動時 server 和 plugin 的配置
        - controller // 放 API 測試
        - mocha.opts // mocha 設定檔
    
  • 新增且設定 mocha.opts

    --timeout 500000 // 當 mocha 多久沒收到回應就當這個測試是錯誤
    --require should // 載入 shouldjs
    --reporter spec  // 使用 spec 風格顯示測試結果
    --ui bdd // 使用 bdd 撰寫測試
    --recursive ./test/config/app.js ./test/controller/*.spec.js // 寫好的測試檔案的位置
    

後記

下一篇進行 Mocha 的實作


上一篇
[Day 20] 動手篇 - Koa is working
下一篇
[Day 22] 動手篇 - Please give me Mocha (2)
系列文
從零開始認識 Node.js31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言