您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)node.js中如何是斷言,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
如何使用嚴(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') // success assert.strictEqual(0, '0') // error
assert.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)
檢測是否為真值,是assert.ok的別名。
assert.ok(value: any, message?: string | Error)
檢測value是否為真值。
如果不為真值,拋出屬性message為message參數(shù)值的AssertionError,如果未定義,為默認(rèn)錯(cuò)誤信息。
如果是Error的實(shí)例,則拋出Error實(shí)例。(以下關(guān)于message的使用都一樣)
assert.strictEqual(actual: any, expected: any, message?: string | Error)
檢測 actual參數(shù)和expected參數(shù)之間的嚴(yán)格相等性,使用sameValue比較。
assert.deepStrictEqual(actual: any, expected: any, message?: string | Error)
檢測actual參數(shù)和expected參數(shù)之間的深度嚴(yán)格相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規(guī)則進(jìn)行遞歸計(jì)算。
assert.notStrictEqual(actual: any, expected: any, message?: string | Error)
檢測 actual參數(shù)和expected參數(shù)之間的嚴(yán)格不相等性,使用sameValue比較。
assert.notDeepStrictEqual(actual: any, expected: any, message?: string | Error)
檢測actual參數(shù)和expected參數(shù)之間的深度嚴(yán)格不相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規(guī)則進(jìn)行遞歸計(jì)算。
assert.fail(message?: string | Error = 'failed')
使用提供的錯(cuò)誤消息或默認(rèn)錯(cuò)誤消息拋出 AssertionError。
assert.throws(fn: function, error?: regExp | function | object | Error, message?: string)
檢測fn函數(shù)拋出的錯(cuò)誤是否與預(yù)期的錯(cuò)誤error一樣。
fn為一個(gè)會拋出錯(cuò)誤的函數(shù)
error可以為多種類型,作為與拋出的錯(cuò)誤對比的樣本。
為regExp時(shí),可以匹配拋出的錯(cuò)誤。
assert.throws(() => { throw new Error('it is a error') }, /^Error: it is a error$/);
為function時(shí),可以自定義驗(yàn)證函數(shù)
assert.throws(() => { throw new Error('it is a error') }, (err) => { if ((err instanceof Error) && /error/.test(err)) { return true; } });
為object時(shí),將僅測試驗(yàn)證對象error上的屬性。
const err = new TypeError('錯(cuò)誤值'); err.code = 404; err.foo = 'bar'; err.info = { nested: true, baz: 'text' }; err.reg = /abc/i; // 正則表達(dá)式只有當(dāng)驗(yàn)證對象包含相同的正則表達(dá)式時(shí)才通過。 assert.throws(() => { throw err; }, { name: 'TypeError', message: '錯(cuò)誤值' info: { nested: true, baz: 'text' // 使用嵌套對象需要存在所有屬性。 // 否則驗(yàn)證將失敗。 // 無法對嵌套屬性使用正則表達(dá)式! } });
為Error時(shí),用instanceof檢測是否是該實(shí)例。
注意, error 不能是字符串。 如果提供了一個(gè)字符串作為第二個(gè)參數(shù),則假定 error 被忽略,而字符串將用于 message。
assert.reject(asyncFn: function | promise, error?: regExp | function | object | Error, message?: string)
assert.throws的異步版本。
asyncFn為一個(gè)function時(shí)
立即執(zhí)行該函數(shù),如果該函數(shù)不返回promise,則返回一個(gè)被拒絕(reject)的 Promise。
如果該函數(shù)同步拋出一個(gè)錯(cuò)誤,返回一個(gè)帶有該錯(cuò)誤的被拒絕的 Promise。
asyncFn為一個(gè)Promise時(shí)
等待Promise執(zhí)行,檢測是否被拒絕。
assert.ifError(value: any)
如果value不為null或者undefined就將value作為錯(cuò)誤拋出。
在回調(diào)中測試error參數(shù)時(shí),這很有用。
上述就是小編為大家分享的node.js中如何是斷言了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。