模組test
test 模組是一個測試框架,結合斷言模組assert
可以方便地編寫各種測試案例
在fibjs
中引入test
模組常常需要先進行test setup
操作:
1
2var test = require('test');
test.setup();
在編寫測試案例前通常需要先定義一個測試模組用來描述測試內容。
- describe
describe 所有的測試分組的容器,類似於測試套件的概念,是用於將it
測試掛在特定的分類下,describe 可以包含多個it 用例或者其它嵌套的describe 表示的子分類。
1describe(String name, Function block)
呼叫參數: name: String, 定義模組名稱block: Function, 模組初始化程式碼
- it
表示單一測試案例,每個描述都應該只測單一的一種情況,以確保測試結果的可靠性。
1it(String name, Function block)
呼叫參數: name: String, 定義項目名稱block: Function, 測試內容
- xit & it.skip
表示被跳過的測試案例。
1xit(String name, Function block)
呼叫參數: name: String, 定義項目名稱block: Function, 測試內容
- oit & it.only
表示僅執行目前測試案例,忽略其他測試案例,以便單獨調試當前用例,非常實用。
1
2oit(String name, Function block)
it.only(String name, Function block)
呼叫參數: name: String, 定義項目名稱block: Function, 測試內容
- todo
表示需進一步完善測試用例的計畫。
1todo(String name, Function block)
呼叫參數: name: String, 定義項目名稱block: Function, 測試內容
在編寫測試案例時,通常使用assert斷言模組,對函數的返回進行檢查。使用方法如下:
1assert(condition, String message);
其中,第一個參數是需要斷言的條件,第二個參數是錯誤訊息。
物件
assert
斷言測試模組,如果測試值為假,則報錯,報錯行為可設定繼續運行或錯誤拋出
1assert test.assert;
靜態函數
describe
定義一個測試模組,可嵌套定義
1
2static test.describe(String name,
Function block);
呼叫參數:
- name: String, 定義模組名稱
- block: Function, 模組初始化程式碼
xdescribe
暫停測試的模組定義,test.setup後可使用describe.skip 調用
1
2static test.xdescribe(String name,
Function block);
呼叫參數:
- name: String, 定義模組名稱
- block: Function, 模組初始化程式碼
odescribe
獨立測試的模組定義,test.setup後可使用describe.only 調用
1
2static test.odescribe(String name,
Function block);
呼叫參數:
- name: String, 定義模組名稱
- block: Function, 模組初始化程式碼
it
定義一個測試項目
1
2static test.it(String name,
Function block);
呼叫參數:
- name: String, 定義專案名稱
- block: Function, 測試內容
xit
暫停測試的項目定義,test.setup後可使用it.skip 調用
1
2static test.xit(String name,
Function block);
呼叫參數:
- name: String, 定義專案名稱
- block: Function, 測試內容
oit
獨立測試的項目定義,test.setup後可使用it.only 調用
1
2static test.oit(String name,
Function block);
呼叫參數:
- name: String, 定義專案名稱
- block: Function, 測試內容
todo
計劃項目定義,test.setup後可使用it.todo 調用
1
2static test.todo(String name,
Function block);
呼叫參數:
- name: String, 定義專案名稱
- block: Function, 測試內容
before
定義當前測試模組進入事件
1static test.before(Function func);
呼叫參數:
- func: Function, 事件函數
after
定義當前測試模組退出事件
1static test.after(Function func);
呼叫參數:
- func: Function, 事件函數
beforeEach
定義目前測試模組測試項目進入事件
1static test.beforeEach(Function func);
呼叫參數:
- func: Function, 事件函數
afterEach
定義目前測試模組測試項目退出事件
1static test.afterEach(Function func);
呼叫參數:
- func: Function, 事件函數
mustCall
測試一個函數必須被呼叫指定次數
1static Function test.mustCall(Function func);
呼叫參數:
- func: Function, 被測試的函數
回傳結果:
- Function, 傳回被包裹的函數
mustNotCall
測試一個函數必須不被調用
1static Function test.mustNotCall(Function func);
呼叫參數:
- func: Function, 被測試的函數
回傳結果:
- Function, 傳回被包裹的函數
測試一個函數必須不被調用
1static Function test.mustNotCall();
回傳結果:
- Function, 傳回被包裹的函數
run
開始執行定義的測試模組
1static Object test.run(Integer mode = console.ERROR);
呼叫參數:
- mode: Integer, 指定進行測試模式,ERROR 時,項目報錯資訊集中在報告後顯示,低於ERROR 時,輸出資訊隨時顯示,高於ERROR 時,只顯示報告
回傳結果:
- Object, 回傳測試結果
測試運行完成後,將以以下形式傳回測試結果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33{
"total": 2, // number of total test cases
"pass": 2, // number of passed test cases
"fail": 0, // number of failed test cases
"skip": 0, // number of skipped test cases
"todo": 0, // number of todo test cases
"time": 0.000000, // time elapsed in seconds
"cases": [ // details of test cases
{
"name": "test", // name of test case
"time": 0.000000, // time elapsed in seconds
"result": true, // result of test case
"error": null // message of error if test case failed
},
{
"name": "sub cases", // name of sub test case
"total": 1, // number of total test cases
"pass": 1, // number of passed test cases
"fail": 0, // number of failed test cases
"skip": 0, // number of skipped test cases
"todo": 0, // number of todo test cases
"time": 0.000000, // time elapsed in seconds
"cases": [ // details of test cases
{
"name": "test", // name of test case
"time": 0.000000, // time elapsed in seconds
"result": true, // result of test case
"error": null // message of error if test case failed
}
]
}
]
}
setup
初始化目前腳本的測試環境,將test 模組方法複製為目前腳本全域變數
1static test.setup();
靜態屬性
slow
Integer, 設定和查詢慢速測試警告閥值,以ms 為單位,缺省為75
1static Integer test.slow;