當前位置:網站首頁>Chai 和 Mocha 為API編寫測試
Chai 和 Mocha 為API編寫測試
2021-08-20 02:04:04 【devpoint】
在文章《JavaScript單元測試的“抹茶”組合:Mocha和Chai》介紹了JavaScript單元測試常用組合,本文展示使用 Chai
和 Mocha
為API編寫簡單的測試用例。
本文將除用到主要框架 Chai
和 Mocha
外,還需要用到 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 步
在項目目錄中創建一個名為 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
邊欄推薦
猜你喜歡
隨機推薦
- emplace_back 和 push_back 的區別
- 藍橋杯第三講--二分【習題】
- Qt給靜態屏保加上粒子特效
- leader epoch
- 圖的著色問題
- cesium導入旋轉動畫
- QGC雜記
- Wireshark實驗四:UDP
- 面試面到自閉,職場反思,原來是我沒有掌握其中精髓
- ctf,show msic入門
- 網絡文件系統
- Js基礎_作用域
- 《滲透測試具體流程》
- Endnote使用方法——檢查參考文獻
- 自建Kubernetes的LoadBalancer類型服務方案-MetalLB
- LeetCode 7.整數反轉
- 【ISO15765_UDS&OBD診斷】-02-Network layer網絡層介紹
- C 練習實例90
- 百度BML-飛槳服務器以及Jetson nano部署實戰案例(下)
- 小程序雲開發——雲數據庫的增删查改(2)
- 適合10歲小孩投保的保險產品都有什麼啊?少兒險可以買哪些險種?
- 網上期貨開戶安全麼?期貨開戶准備什麼資料?
- 查看多臺jps的脚本
- Material Design 3 全新的進階版本UI庫
- 雲演 CTF Web題型 lfi 文件包含
- 登錄令牌JWT — JSON WEB TOKEN
- 【leectode 2022.1.22】批量處理任務
- IC驗證中的force/release 學習整理(4)後門訪問機制成與敗(續)
- Leetcode 算法面試沖刺 實戰 五(數組與循環)(十二)
- 數學建模-模糊綜合評價法(評價模型)
- DWR异常:org.xml.sax.SAXException
- 各大直播平臺主播的收入計算方式是怎樣的?
- 工程師必須知道的幾個原則
- 細品事務機制(一)
- DCGAN 源碼解析
- 李宏毅《機器學習》| 神經網絡訓練不起來怎麼辦(下)
- 2021年G2電站鍋爐司爐考試題庫及G2電站鍋爐司爐考試試卷
- Go 自定義日期時間格式解析解决方案 - 解决 `parsing time xx as xx: cannot parse xx as xx` 錯誤
- Redis 是如何處理命令的(客戶端)
- 『淺入淺出』MySQL 和 InnoDB