Module 基礎模組

模組test

test 模組是一個測試框架,結合斷言模組assert可以方便地編寫各種測試案例

fibjs中引入test模組常常需要先進行test setup操作:

1 2
var test = require('test'); test.setup();

在編寫測試案例前通常需要先定義一個測試模組用來描述測試內容。

  • describe

describe 所有的測試分組的容器,類似於測試套件的概念,是用於將it測試掛在特定的分類下,describe 可以包含多個it 用例或者其它嵌套的describe 表示的子分類。

1
describe(String name, Function block)

呼叫參數: name: String, 定義模組名稱block: Function, 模組初始化程式碼

  • it

表示單一測試案例,每個描述都應該只測單一的一種情況,以確保測試結果的可靠性。

1
it(String name, Function block)

呼叫參數: name: String, 定義項目名稱block: Function, 測試內容

  • xit & it.skip

表示被跳過的測試案例。

1
xit(String name, Function block)

呼叫參數: name: String, 定義項目名稱block: Function, 測試內容

  • oit & it.only

表示僅執行目前測試案例,忽略其他測試案例,以便單獨調試當前用例,非常實用。

1 2
oit(String name, Function block) it.only(String name, Function block)

呼叫參數: name: String, 定義項目名稱block: Function, 測試內容

  • todo

表示需進一步完善測試用例的計畫。

1
todo(String name, Function block)

呼叫參數: name: String, 定義項目名稱block: Function, 測試內容

在編寫測試案例時,通常使用assert斷言模組,對函數的返回進行檢查。使用方法如下:

1
assert(condition, String message);

其中,第一個參數是需要斷言的條件,第二個參數是錯誤訊息。

物件

assert

斷言測試模組,如果測試值為假,則報錯,報錯行為可設定繼續運行或錯誤拋出

1
assert test.assert;

靜態函數

describe

定義一個測試模組,可嵌套定義

1 2
static test.describe(String name, Function block);

呼叫參數:

  • name: String, 定義模組名稱
  • block: Function, 模組初始化程式碼

xdescribe

暫停測試的模組定義,test.setup後可使用describe.skip 調用

1 2
static test.xdescribe(String name, Function block);

呼叫參數:

  • name: String, 定義模組名稱
  • block: Function, 模組初始化程式碼

odescribe

獨立測試的模組定義,test.setup後可使用describe.only 調用

1 2
static test.odescribe(String name, Function block);

呼叫參數:

  • name: String, 定義模組名稱
  • block: Function, 模組初始化程式碼

it

定義一個測試項目

1 2
static test.it(String name, Function block);

呼叫參數:

  • name: String, 定義專案名稱
  • block: Function, 測試內容

xit

暫停測試的項目定義,test.setup後可使用it.skip 調用

1 2
static test.xit(String name, Function block);

呼叫參數:

  • name: String, 定義專案名稱
  • block: Function, 測試內容

oit

獨立測試的項目定義,test.setup後可使用it.only 調用

1 2
static test.oit(String name, Function block);

呼叫參數:

  • name: String, 定義專案名稱
  • block: Function, 測試內容

todo

計劃項目定義,test.setup後可使用it.todo 調用

1 2
static test.todo(String name, Function block);

呼叫參數:

  • name: String, 定義專案名稱
  • block: Function, 測試內容

before

定義當前測試模組進入事件

1
static test.before(Function func);

呼叫參數:

  • func: Function, 事件函數

after

定義當前測試模組退出事件

1
static test.after(Function func);

呼叫參數:

  • func: Function, 事件函數

beforeEach

定義目前測試模組測試項目進入事件

1
static test.beforeEach(Function func);

呼叫參數:

  • func: Function, 事件函數

afterEach

定義目前測試模組測試項目退出事件

1
static test.afterEach(Function func);

呼叫參數:

  • func: Function, 事件函數

mustCall

測試一個函數必須被呼叫指定次數

1
static Function test.mustCall(Function func);

呼叫參數:

  • func: Function, 被測試的函數

回傳結果:

  • Function, 傳回被包裹的函數

mustNotCall

測試一個函數必須不被調用

1
static Function test.mustNotCall(Function func);

呼叫參數:

  • func: Function, 被測試的函數

回傳結果:

  • Function, 傳回被包裹的函數

測試一個函數必須不被調用

1
static Function test.mustNotCall();

回傳結果:

  • Function, 傳回被包裹的函數

run

開始執行定義的測試模組

1
static 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 模組方法複製為目前腳本全域變數

1
static test.setup();

靜態屬性

slow

Integer, 設定和查詢慢速測試警告閥值,以ms 為單位,缺省為75

1
static Integer test.slow;