assert模塊提供了一組簡(jiǎn)單的斷言測(cè)試,分嚴(yán)格模式(strict)和遺留模式(legacy),嚴(yán)格模式下,對(duì)比的方式比較嚴(yán)格,比如說,0與'0'比較,會(huì)報(bào)錯(cuò),但在遺留模式下是可以通過的。官方推薦使用嚴(yán)格模式, 所以本文基于strict模式下學(xué)習(xí)。
如何使用嚴(yán)格模式
const assert = require('assert').strict; // 嚴(yán)格模式assert.equal(0, '0') // error全局使用strict模式后,assert.equal() 與assert.strictEqual()的效果是一樣的。
如果不想全局使用的話,可以直接使用帶strict的方法。
const assert = require('assert') // 遺留模式assert.equal(0, '0') // successassert.strictEqual(0, '0') // errorassert.AssertionError
Error的子類,表示斷言失敗,assert模塊拋出的錯(cuò)誤都是AssertionError的實(shí)例。
類似于下面這個(gè)class,實(shí)際上的AssertionError是由ES5寫的,下面這個(gè)只是方便理解傳入的參數(shù)
interface IOptions { message?: string; // 設(shè)置錯(cuò)誤的信息 actual?: any; // 設(shè)置錯(cuò)誤實(shí)例上的實(shí)際值 expected?: any; // 設(shè)置錯(cuò)誤實(shí)例上的期望值 operator?: string; // 設(shè)置用于比較的操作或觸發(fā)錯(cuò)誤的斷言函數(shù) stackStartFn(): any; // 生成的堆棧跟蹤將移除所有幀直到提供的函數(shù)}class AssertionError extends Error { constructor(options: IOptions) { // ... }}assert(value: any, message?: string | Error)
檢測(cè)是否為真值,是assert.ok的別名。
assert.ok(value: any, message?: string | Error)
檢測(cè)value是否為真值。
如果不為真值,拋出屬性message為message參數(shù)值的AssertionError,如果未定義,為默認(rèn)錯(cuò)誤信息。
如果是Error的實(shí)例,則拋出Error實(shí)例。(以下關(guān)于message的使用都一樣)
assert.strictEqual(actual: any, expected: any, message?: string | Error)
檢測(cè) actual參數(shù)和expected參數(shù)之間的嚴(yán)格相等性,使用sameValue比較。
assert.deepStrictEqual(actual: any, expected: any, message?: string | Error)
檢測(cè)actual參數(shù)和expected參數(shù)之間的深度嚴(yán)格相等性,深度比較意味著子對(duì)象的可枚舉的自身屬性也通過以下規(guī)則進(jìn)行遞歸計(jì)算。
assert.notStrictEqual(actual: any, expected: any, message?: string | Error)
檢測(cè) actual參數(shù)和expected參數(shù)之間的嚴(yán)格不相等性,使用sameValue比較。
assert.notDeepStrictEqual(actual: any, expected: any, message?: string | Error)
檢測(cè)actual參數(shù)和expected參數(shù)之間的深度嚴(yán)格不相等性,深度比較意味著子對(duì)象的可枚舉的自身屬性也通過以下規(guī)則進(jìn)行遞歸計(jì)算。
assert.fail(message?: string | Error = 'failed')
使用提供的錯(cuò)誤消息或默認(rèn)錯(cuò)誤消息拋出 AssertionError。
新聞熱點(diǎn)
疑難解答
圖片精選