亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node.js中如何是斷言

發布時間:2021-07-21 11:04:54 來源:億速云 閱讀:167 作者:Leah 欄目:web開發

這期內容當中小編將會給大家帶來有關node.js中如何是斷言,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

如何使用嚴格模式

const assert = require('assert').strict; // 嚴格模式
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模塊拋出的錯誤都是AssertionError的實例。

類似于下面這個class,實際上的AssertionError是由ES5寫的,下面這個只是方便理解傳入的參數

interface IOptions {
 message?: string; // 設置錯誤的信息
 actual?: any; // 設置錯誤實例上的實際值
 expected?: any; // 設置錯誤實例上的期望值
 operator?: string; // 設置用于比較的操作或觸發錯誤的斷言函數
 stackStartFn(): any; // 生成的堆棧跟蹤將移除所有幀直到提供的函數
}


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參數值的AssertionError,如果未定義,為默認錯誤信息。

如果是Error的實例,則拋出Error實例。(以下關于message的使用都一樣)

assert.strictEqual(actual: any, expected: any, message?: string | Error)

檢測 actual參數和expected參數之間的嚴格相等性,使用sameValue比較。

assert.deepStrictEqual(actual: any, expected: any, message?: string | Error)

檢測actual參數和expected參數之間的深度嚴格相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規則進行遞歸計算。

assert.notStrictEqual(actual: any, expected: any, message?: string | Error)

檢測 actual參數和expected參數之間的嚴格不相等性,使用sameValue比較。

assert.notDeepStrictEqual(actual: any, expected: any, message?: string | Error)

檢測actual參數和expected參數之間的深度嚴格不相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規則進行遞歸計算。

assert.fail(message?: string | Error = 'failed')

使用提供的錯誤消息或默認錯誤消息拋出 AssertionError。

assert.throws(fn: function, error?: regExp | function | object | Error, message?: string)

檢測fn函數拋出的錯誤是否與預期的錯誤error一樣。

fn為一個會拋出錯誤的函數

error可以為多種類型,作為與拋出的錯誤對比的樣本。

為regExp時,可以匹配拋出的錯誤。

assert.throws(() => {
 throw new Error('it is a error')
}, /^Error: it is a error$/);

為function時,可以自定義驗證函數

assert.throws(() => {
 throw new Error('it is a error')
}, (err) => {
 if ((err instanceof Error) && /error/.test(err)) {
  return true;
 }
});

為object時,將僅測試驗證對象error上的屬性。

const err = new TypeError('錯誤值');
err.code = 404;
err.foo = 'bar';
err.info = {
 nested: true,
 baz: 'text'
};
err.reg = /abc/i; // 正則表達式只有當驗證對象包含相同的正則表達式時才通過。

assert.throws(() => {
 throw err;
}, {
 name: 'TypeError',
 message: '錯誤值'
 info: {
  nested: true,
  baz: 'text'
  // 使用嵌套對象需要存在所有屬性。
  // 否則驗證將失敗。
  // 無法對嵌套屬性使用正則表達式!
 }
});

為Error時,用instanceof檢測是否是該實例。

注意, error 不能是字符串。 如果提供了一個字符串作為第二個參數,則假定 error 被忽略,而字符串將用于 message。

assert.reject(asyncFn: function | promise, error?: regExp | function | object | Error, message?: string)

assert.throws的異步版本。

asyncFn為一個function時

立即執行該函數,如果該函數不返回promise,則返回一個被拒絕(reject)的 Promise。
如果該函數同步拋出一個錯誤,返回一個帶有該錯誤的被拒絕的 Promise。

asyncFn為一個Promise時

等待Promise執行,檢測是否被拒絕。

assert.ifError(value: any)

如果value不為null或者undefined就將value作為錯誤拋出。

在回調中測試error參數時,這很有用。

上述就是小編為大家分享的node.js中如何是斷言了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

瑞昌市| 象州县| 青田县| 奇台县| 大邑县| 盐亭县| 思茅市| 华宁县| 康定县| 赤壁市| 多伦县| 交城县| 贺兰县| 龙门县| 乌鲁木齐市| 南京市| 余庆县| 红桥区| 绍兴市| 株洲县| 惠东县| 德阳市| 永州市| 眉山市| 普安县| 东乡族自治县| 安远县| 宜宾县| 弥渡县| 西乡县| 稻城县| 松江区| 同江市| 峨山| 彰化县| 德江县| 团风县| 苏尼特左旗| 许昌县| 大城县| 株洲市|