jasmine 全域的成員。
註:asymmetricEqualityTesters 命名空間
的成員也可以透過 jasmine 全域存取,但由於 jsdoc 限制,並未在此處列出。
成員
(static) DEFAULT_TIMEOUT_INTERVAL
在非同步 spec 前或後執行 function 前,Jasmine 會等待的預設毫秒數。可透過將時間限制值作為第三個引數,逐一傳遞給 it
、beforeEach
、afterEach
、beforeAll
或 afterAll
來個別覆寫這項設定。其值不得大於 setTimeout 所支援的最大毫秒數,而該值通常為 2147483647。
進行除錯測試時,您可能會想要將此值設定為較大的數字(或將較大的數字傳遞給上述其中一種函式),如此一來 Jasmine 就不會在您進行除錯時繼續執行後續函式或下一個 spec。
- 自
- 1.3.0
- 預設值
- 5000
(static) MAX_PRETTY_PRINT_ARRAY_LENGTH
漂亮列印物件時要顯示的陣列元素最大數量。這也會限制物件所顯示的鍵和值數量。超出此數量的元素將被省略。
- 自
- 2.7.0
- 預設值
- 50
(static) MAX_PRETTY_PRINT_CHARS
漂亮列印物件時要顯示的字元最大數量。超出此數量的字元將被省略。
- 自
- 2.9.0
- 預設值
- 100
(static) MAX_PRETTY_PRINT_DEPTH
漂亮列印程式將列印的最大物件深度。如有大型物件,將此值設定為較小的數字,可加速漂亮列印處理。
- 自
- 1.3.0
- 預設值
- 8
方法
(static) addAsyncMatchers(matchers)
為當前 spec 範圍加入自訂非同步比對器。
註:這僅能從 beforeEach
、it
或 beforeAll
中呼叫。
參數
名稱 | 類型 | 說明 |
---|---|---|
matchers |
物件 | 此物件中的金鑰將成為新的非同步比對器名稱。 |
- 自
- 3.5.0
- 請參閱
(static) addCustomEqualityTester(tester)
為當前 spec 範圍加入自訂相等性測試器。
註:這僅能從 beforeEach
、it
或 beforeAll
中呼叫。
參數
名稱 | 類型 | 說明 |
---|---|---|
tester |
函式 | 此函式接收兩個引數進行比較,如果函式知道如何比較這些引數,便會傳回 |
- 自
- 2.0.0
- 請參閱
(static) addCustomObjectFormatter(formatter)
為目前規格範圍加入客製化物件格式化器。
註:這僅能從 beforeEach
、it
或 beforeAll
中呼叫。
參數
名稱 | 類型 | 說明 |
---|---|---|
格式化器 |
函式 | 一個傳入格式化值並傳回字串的函式(如果它知道如何格式化),否則,傳回 `undefined`。 |
- 自
- 3.6.0
- 請參閱
(static) addMatchers(matchers)
為目前規格範圍加入客製化比對器。
註:這僅能從 beforeEach
、it
或 beforeAll
中呼叫。
參數
名稱 | 類型 | 說明 |
---|---|---|
matchers |
物件 | 此物件的「金鑰」將成為新的比對器名稱。 |
- 自
- 2.0.0
- 請參閱
(static) addSpyStrategy(name, factory)
為目前規格範圍加入客製化偵探策略。
註:這僅能從 beforeEach
、it
或 beforeAll
中呼叫。
參數
名稱 | 類型 | 說明 |
---|---|---|
名稱 |
字串 | 策略名稱(例如:從 `and` 呼叫的部分) |
工廠 |
函式 | 工廠函式傳回要執行的計畫。 |
- 自
- 3.5.0
(static) clock() → {Clock}
取得目前啟動的模擬 {Clock},以供此 Jasmine 環境用。
- 自
- 2.0.0
傳回
- 類型
- Clock
(static) createSpy(nameopt, originalFnopt) → {Spy}
產生一個空白的 Spy
物件。這個物件不會安裝在任何地方,而且背後不會執行任何實作。
參數
名稱 | 類型 | 屬性 | 說明 |
---|---|---|---|
名稱 |
字串 | <optional> |
給偵探的名稱。此名稱會顯示在執行錯誤訊息中。 |
originalFn |
函式 | <optional> |
「真實的」函式。在呼叫 `mySpy.and.callThrough()` 之後會用於偵探的後續呼叫。在大部分情況下,你應該省略此參數。提供原始函式的常用方法是呼叫 |
- 自
- 1.3.0
傳回
- 類型
- Spy
(static) createSpyObj(baseNameopt, methodNames, propertyNamesopt) → {Object}
建立一個包含多個 Spy
成員的物件。
參數
名稱 | 類型 | 屬性 | 說明 |
---|---|---|---|
baseName |
字串 | <optional> |
物件中偵探的基本名稱。 |
methodNames |
Array.<String> | Object | 要建立偵探的函式方法陣列,或包含金鑰(函式方法名稱)和值( |
|
propertyNames |
Array.<String> | Object | <optional> |
要建立偵探的屬性名稱陣列,或包含金鑰(屬性名稱)和值( |
- 自
- 1.3.0
傳回
- 類型
- 物件
(static) debugLog(msg)
記錄訊息以供偵錯用。如果規格失敗,追蹤訊息會包含在傳遞給報告工具的 specDone 方法中的 result
中。
此方法只應該在規格(包含任何相關 beforeEach 或 afterEach 函式)執行時呼叫。
參數
名稱 | 類型 | 說明 |
---|---|---|
msg |
字串 | 要記錄的訊息 |
- 自
- 4.0.0
(static) getEnv() → {Env}
取得目前啟動的 Jasmine 環境。
- 自
- 1.3.0
傳回
- 類型
- Env
(static) isSpy(putativeSpy) → {Boolean}
判斷提供的函式是否為 Jasmine 偵探。
參數
名稱 | 類型 | 說明 |
---|---|---|
putativeSpy |
函式 | 要檢查的函式。 |
- 自
- 2.0.0
傳回
- 類型
- 布林
(static) setDefaultSpyStrategy(defaultStrategyFn)
設定目前規格範圍的預設偵探策略。
註:這僅能從 beforeEach
、it
或 beforeAll
中呼叫。
參數
名稱 | 類型 | 說明 |
---|---|---|
defaultStrategyFn |
函式 | 指定策略的函式 |
範例
beforeEach(function() {
jasmine.setDefaultSpyStrategy(and => and.returnValue(true));
});
(async, static) spyOnGlobalErrorsAsync(fn)
以 spy 取代 Jasmine 的全域錯誤處理。這可避免 Jasmine 將未捕捉的例外狀況和未處理的承諾拒絕視為規格失敗,讓您可以使用 spy 的呼叫屬性
和相關比對器,例如toHaveBeenCalledWith
來檢查錯誤處理。
安裝 spy 後,spyOnGlobalErrorsAsync 會立即呼叫其參數,此參數必須是非同步函數或回傳承諾的函數。間諜將作為第一個參數傳遞給該回呼。當回呼程式回傳的承諾已解決時,將會還原正常的錯誤處理。
當 JavaScript 執行環境報告未捕捉的錯誤或未處理的拒絕時,spy 將會以單一參數呼叫,表示 Jasmine 最好的錯誤說明。此參數可以是任何類型,因為 JavaScript 允許將任何項目拋出或做為拒絕承諾的原因,但最常見的還是 Error 執行個體和字串。
注意:JavaScript 執行環境可能會非同步地傳送未捕捉的錯誤事件和未處理的拒絕事件,特別是在瀏覽器中。如果事件發生在回呼程式回傳的承諾已解決之後,即使底層錯誤是在發生在前,事件也不會傳遞到 spy。由您確保已處理所有想要處理的錯誤/拒絕事件,然後再解析回呼程式回傳的承諾。
您必須確保呼叫 spyOnGlobalErrorsAsync
的 it
/beforeEach
/etc fn 在 spyOnGlobalErrorsAsync
回傳的承諾解析之後,才發出完成訊號。通常會透過 await
回傳的承諾來執行此動作。將全域錯誤 spy 保留在安裝它的 it
/beforeEach
/etc fn 之後再發出完成訊號,可能會造成問題,而且不受支援。
參數
名稱 | 類型 | 說明 |
---|---|---|
fn |
AsyncFunction | 一個要執行的函數,其間全域錯誤 spy 將會生效 |
範例
it('demonstrates global error spies', async function() {
await jasmine.spyOnGlobalErrorsAsync(async function(globalErrorSpy) {
setTimeout(function() {
throw new Error('the expected error');
});
await new Promise(function(resolve) {
setTimeout(resolve);
});
const expected = new Error('the expected error');
expect(globalErrorSpy).toHaveBeenCalledWith(expected);
});
});