Introduction
前一篇介紹了用於 Node.js 的主流測試框架 Mocha。 這一篇將介紹兩個關於測試時兩個很重要的功能: Supertest
及 Mock
Supertest
Supertest 是在測試框架中用來模擬 HTTP Request 的套件。
Install
1 | $ npm install supertest --save |
Example
假設我們現在有一個 API: /api/users
會以 json 格式回傳所有使用者資料。那測試程式應該怎麼撰寫呢?
1 | var request = require('supertest'); |
在這個範例裡面 request() 就是 supertest 的韓式,在這個過程裡檢查了以下幾點:
- 回傳格式為 JSON
- 回傳 HTTP 狀態碼為 200
- 沒有任何錯誤的情況發生
Mock
在寫測試的時候,測試的功能本身可能牽涉到其他動作才能驗證,這個時候 Mock 就可以用來模擬這個動作,讓我們可以專注於這次的測試上。Sinon.js 是一個在 Mocha 中常用的一個 Mock 套件。 stub 是 Mock 中的一個功能,用來複寫函式的 結果
。 mock 是 Mock 中的另一個功能,用來複寫函式的行為
及結果
。
Install
1 | $ npm install -D sinon |
Example
1 | var app = require('../app'); |
這個例子可以看到在測試前後有 before 和 after 兩個函式,他們分別會在測試前後執行一次。假如原本的測試中必須要先登入才能執行的話,我們可以先在 before 中,利用 sinon 覆蓋 UserService getLoginState() 成 true。也能使用 mock 模擬 執行 getLoginState() 一次,結果為 true。
Reference
[1] Node.js 測試處理 (2)
[2] supertest请求测试
[3] 测试框架 Mocha 实例教程
License
本著作由 Chang, Wei-Yaun (v123582) 製作,
以創用CC 姓名標示-相同方式分享 3.0 Unported授權條款釋出。