Nodejs單元測試教學:使用Mocha, Chai等工具進行API測試

Find AI Tools
No difficulty
No complicated process
Find ai tools

Nodejs單元測試教學:使用Mocha, Chai等工具進行API測試

Table of Contents

  1. 簡介
  2. 使用的工具
  3. 開始之前
  4. 基本設置
    • 安裝所需的包
    • 創建專案
    • 配置環境變數
    • 創建路由
  5. 測試環境設置
    • 安裝測試框架
    • 配置測試文件
  6. 創建第一個測試案例
    • 測試描述
    • 測試前置條件
    • 執行測試
    • 驗證測試結果
  7. 擴展測試範例
    • 測試API擴展
    • 驗證API結果
  8. 覆蓋率測試
    • 安裝覆蓋率工具
    • 執行覆蓋率測試
    • 查看覆蓋率報告
  9. 使用GitHub Actions
    • 配置GitHub Actions
    • 測試自動運行
  10. 結論

🚀 使用Node.js進行單元測試

在本節課視頻中,我們將使用Node.js創建一個API的單元測試。我們將使用Mocha、ChaiSupertest這些工具來完成測試。Mocha是一個JavaScript測試框架,Chai則是一個斷言庫,而Supertest則允許我們向我們的Node.js HTTP服務器發送HTTP請求。我們還將使用Istanbul的NYC包來進行測試覆蓋率,並設置GitHub Actions以自動運行單元測試。現在讓我們開始吧!

簡介

首先,讓我們簡單介紹一下我們將要做的事情。我們將使用Node.js和Express框架來創建一個簡單的API。這個API將允許用戶註冊、登錄和獲取用戶信息。我們的目標是使用單元測試來確保我們的API正常運行並返回正確的結果。我們將創建多個測試用例來驗證不同的輸入和預期輸出情況。

使用的工具

在開始之前,我們需要確保我們安裝了所需的工具和包。我們將使用以下工具和包:

  • Node.js:作為我們的運行環境
  • Express:用於創建API服務器
  • Mocha:用於編寫和運行測試用例
  • Chai:用於斷言測試結果
  • Supertest:用於發送HTTP請求並測試API響應
  • NYC:用於計算測試覆蓋率
  • GitHub Actions:用於設置自動運行單元測試

開始之前

在我們開始之前,我們需要設置一些基本的環境。首先,確保你的機器上安裝了Node.js,你可以在終端中運行node -v來檢查Node.js的版本。如果還沒有安裝Node.js,請到官方網站下載並安裝最新的穩定版本。

接下來,我們需要使用Node.js的包管理器npm來安裝其他相關的包。在終端中運行以下命令來創建一個新的Node.js專案並初始化Package.json文件:

$ npm init

按照提示完成初始化過程並安裝所需的包。

基本設置

現在我們已經擁有了一個新的Node.js專案,接下來我們需要進行一些基本的設置工作。首先,我們需要安裝一些我們將在測試中使用的包。

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

這將安裝Express框架、Mocha測試框架、Chai斷言庫和Supertest用於測試API響應。

接下來,我們需要配置一些環境變數。在你的專案根目錄下創建一個.env文件,並添加以下內容:

PORT=3000

這將設置我們的服務器監聽的端口號為3000。

完成以上操作後,我們需要創建一個路由文件。在你的專案根目錄下創建一個routes.js文件,並添加以下內容:

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.send('Hello, world!');
});

module.exports = router;

這將創建一個簡單的路由,當用戶訪問根路徑時返回Hello, world!

至此,我們的基本設置工作已經完成。現在讓我們測試一下我們的服務器是否正常運行。在終端中運行以下命令來啟動服務器:

npm start

然後在瀏覽器中訪問http://localhost:3000,你應該能夠看到Hello, world!的頁面。

測試環境設置

在開始編寫測試用例之前,我們需要安裝並配置測試框架和相關的包。

首先,我們需要安裝mochachai

npm install mocha chai --save-dev

這將安裝Mocha測試框架和Chai斷言庫。

接下來,我們需要在專案根目錄下創建一個test文件夾來存放我們的測試文件。

現在,讓我們創建我們的第一個測試案例。

創建第一個測試案例

test文件夾下創建一個app.spec.js文件,並添加以下內容:

const chai = require('chai');
const chaiHttp = require('chai-http');
const app = require('../app');
const expect = chai.expect;

chai.use(chaiHttp);

describe('App', () => {
  it('should return "Hello, world!" when GET /', (done) => {
    chai.request(app)
      .get('/')
      .end((err, res) => {
        expect(res).to.have.status(200);
        expect(res.body).to.have.property('message').equal('Hello, world!');
        done();
      });
  });
});

這個測試案例將測試當用戶訪問根路徑時,服務器是否返回了正確的內容。

在這個測試案例中,我們使用了chaiexpect斷言函數來確認測試結果。我們首先使用chai.request(app)發送一個GET請求到根路徑,然後在end回調函數中對響應進行斷言。

現在,讓我們運行測試案例來檢查我們的服務器是否正確運行。在終端中運行以下命令:

npm test

如果一切正常,你應該能夠看到測試通過的結果。

這是我們如何使用Mocha和Chai創建和運行單元測試的基本例子。你可以根據你的需求擴展這些測試案例,並添加更多的斷言和測試項目。

覆蓋率測試

我們通常希望確定我們的測試條件是否已達到,並確保我們的代碼被完全覆蓋。為了進行這種類型的測試,我們將使用Istanbul的NYC包。

首先,讓我們安裝NYC包:

npm install nyc --save-dev

然後,我們需要修改package.json文件來配置測試覆蓋率。在scripts部分中,將以下命令添加到test命令之前:

"test:coverage": "nyc --reporter=text mocha"

這將讓我們能夠使用npm run test:coverage命令運行測試並生成覆蓋率報告。

現在,運行以下命令來測試覆蓋率:

npm run test:coverage

成功運行測試用例後,你應該能夠看到覆蓋率報告。

這是我們如何使用NYC計算測試覆蓋率的例子。你可以根據你的需求定製覆蓋率報告的格式和內容。

使用GitHub Actions

為了確保我們的測試在每次提交代碼時都能自動運行,我們將使用GitHub Actions。

首先,我們需要在專案的根目錄下創建一個.github/workflows文件夾。在這個文件夾下創建一個main.yml文件,並添加以下內容:

name: Node.js CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [10.x, 14.x]
        mongodb-version: [4.0, 4.2]

    steps:
    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}

    - name: Set up MongoDB
      uses: docker-compose-action@v1
      with:
        compose-file: docker-compose-test.yml
        run: 'mongo:latest'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

這個工作流將在每次提交到main分支時運行測試。它使用了Ubuntu 20.04作為運行環境,並分別運行了Node.js 10和Node.js 14版本的測試。它還使用了Docker來運行MongoDB來模擬我們的測試環境。

現在,當你將代碼推送到main分支時,你應該能夠在GitHub Actions面板中看到測試運行的結果。

這就是我們如何使用GitHub Actions設置自動運行單元測試的例子。你可以根據你的需求自定義GitHub Actions的配置。

結論

在本節課中,我們學習了如何使用Node.js和Mocha進行單元測試。我們使用了Chai來斷言測試結果,並使用Supertest來測試API響應。我們還使用了Istanbul的NYC包來計算測試覆蓋率。最後,我們使用GitHub Actions設置了自動運行單元測試。

這是一個簡單的例子,幫助你了解如何使用單元測試來確保你的代碼正常運行。你可以根據你的需求擴展這些測試案例,並根據你的需求設置測試報告和自動運行。

祝你好運並繼續享受編程的樂趣!如果你有任何問題,請隨時提問。

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.