當前位置:網站首頁>Chai 和 Mocha 為API編寫測試

Chai 和 Mocha 為API編寫測試

2021-08-20 02:04:04 devpoint

Chai 和 Mocha 為API編寫測試

在文章《JavaScript單元測試的“抹茶”組合:Mocha和Chai》介紹了JavaScript單元測試常用組合,本文展示使用 ChaiMocha 為API編寫簡單的測試用例。

本文將除用到主要框架 ChaiMocha 外,還需要用到 Chai HTTP

Chai HTTP 是一個使用 Chai 斷言進行 HTTP 集成測試的框架,詳細文檔參閱官方文檔

首先,通過運行以下命令來安裝相關的依賴項:

npm install mocha --save-dev
npm install chai --save-dev
npm install chai-http --save-dev

修改項目文件 package.json ,修改 scripts 項,增加 test 命令:

"scripts": {
    "start": "node ./app.js",
    "dev": "nodemon ./app.js",
    "test": "mocha"
}

接下來開始編寫測試用例,本文以用戶登錄接口為例,三個測試條件:

  1. 登錄成功
  2. 用戶名不存在
  3. 密碼錯誤

測試用例

第 1 步

在項目目錄中創建一個名為 test 的文件夾,然後在其中創建一個文件 administrators.js

第 2 步

接下來編寫單元測試用例,編輯文件administrators.js ,代碼如下:

const chai = require("chai");
const chaiHttp = require("chai-http");
const apiUrl = "http://127.0.0.1:4088";

chai.should();
chai.use(chaiHttp);

describe("測試用戶登錄模塊", () => {
    describe("POST /api/v1/auth/login", () => {
        it("用戶名不存在", (done) => {
            chai.request(apiUrl)
                .post("/api/v1/auth/login")
                .send({
                    username: "devpoint",
                    password: "dev126",
                })
                .end((error, response) => {
                    response.should.have.status(200);
                    response.body.should.be.a("object");
                    response.body.should.have.property("code").eq(30004);
                    done();
                });
        });

        it("登錄密碼錯誤", (done) => {
            chai.request(apiUrl)
                .post("/api/v1/auth/login")
                .send({
                    username: "administrator",
                    password: "dev126",
                })
                .end((error, response) => {
                    response.should.have.status(200);
                    response.body.should.be.a("object");
                    response.body.should.have.property("code").eq(30001);
                    done();
                });
        });
        it("登錄成功", (done) => {
            chai.request(apiUrl)
                .post("/api/v1/auth/login")
                .send({
                    username: "administrator",
                    password: "devpoint",
                })
                .end((error, response) => {
                    response.should.have.status(200);
                    response.body.should.be.a("object");
                    response.body.should.have.property("code").eq(0);
                    response.body.should.have.property("data").a("object");
                    response.body.data.should.have
                        .property("username")
                        .eq("administrator");
                    done();
                });
        });
    });
});

在上面的代碼片段中:

  • describe 是一個保存測試集合的函數,需要兩個參數,第一個是被測功能的名稱或者描述,第二個是包含一個或多個測試邏輯的函數,也可以嵌套描述。
  • it 也是一個函數,它實際上是一個測試主題,接受兩個參數,第一個參數是測試的名稱,第二個參數是函數,實現主要的測試邏輯。

第 3 步

現在運行以下命令以查看測試結果:

npm run test

運行後,將能看到上面編寫的3個單元測試用例結果,如圖:

總結

單元測試為應用程序的最小部分,在開發API接口的時候可以為預期的結果編寫相應的測試用例。在項目開發中,普遍是使用前後端分離的模式,可以使用 Chai 和 Mocha 為後臺接口編寫測試用例,以最大程度的覆蓋接口的邏輯,可以降低前後端聯調出現异常的概率,進而提高項目開發效率。

版權聲明
本文為[devpoint]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2021/08/20210820020404384y.html

隨機推薦