最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

學習node.js 斷言的使用詳解

 更新時間:2019年03月18日 11:32:59   作者:WiessWong  
這篇文章主要介紹了學習node.js 斷言的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

assert模塊提供了一組簡單的斷言測試,分嚴格模式(strict)和遺留模式(legacy),嚴格模式下,對比的方式比較嚴格,比如說,0與'0'比較,會報錯,但在遺留模式下是可以通過的。官方推薦使用嚴格模式, 所以本文基于strict模式下學習。

如何使用嚴格模式

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寫的,下面這個只是方便理解傳入的參數(shù)

interface IOptions {
 message?: string; // 設(shè)置錯誤的信息
 actual?: any; // 設(shè)置錯誤實例上的實際值
 expected?: any; // 設(shè)置錯誤實例上的期望值
 operator?: string; // 設(shè)置用于比較的操作或觸發(fā)錯誤的斷言函數(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,如果未定義,為默認錯誤信息。

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

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

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

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

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

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

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

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

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

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

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

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

檢測fn函數(shù)拋出的錯誤是否與預(yù)期的錯誤error一樣。

fn為一個會拋出錯誤的函數(shù)

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

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

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

為function時,可以自定義驗證函數(shù)

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 不能是字符串。 如果提供了一個字符串作為第二個參數(shù),則假定 error 被忽略,而字符串將用于 message。

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

assert.throws的異步版本。

asyncFn為一個function時

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

asyncFn為一個Promise時

等待Promise執(zhí)行,檢測是否被拒絕。

assert.ifError(value: any)

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

在回調(diào)中測試error參數(shù)時,這很有用。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mongoose更新對象的兩種方法示例比較

    mongoose更新對象的兩種方法示例比較

    最近在使用mongoose的時候發(fā)現(xiàn)了一個之前一直沒注意的知識點,下面這篇文章主要給大家介紹了關(guān)于mongoose更新對象的兩種方法,通過示例代碼將兩種方法進行詳細的對比,以給大家更好的參考學習,需要的朋友可以參考下。
    2017-12-12
  • nodejs 中模擬實現(xiàn) emmiter 自定義事件

    nodejs 中模擬實現(xiàn) emmiter 自定義事件

    這篇文章主要介紹了Nodejs中自定義事件實例,比較簡單的一個例子,需要的朋友可以參考下。
    2016-02-02
  • Node.js基礎(chǔ)入門之緩存區(qū)與文件操作詳解

    Node.js基礎(chǔ)入門之緩存區(qū)與文件操作詳解

    Node.js是一個基于Chrome?V8引擎的JavaScript運行時。類似于Java中的JRE,.Net中的CLR。本文將詳細為大家介紹Node.js中的緩存區(qū)與文件操作,感興趣的可以了解一下
    2022-03-03
  • 關(guān)于在mongoose中填充外鍵的方法詳解

    關(guān)于在mongoose中填充外鍵的方法詳解

    在學習非關(guān)系型數(shù)據(jù)庫mongoDB,希望能夠完成數(shù)據(jù)庫的CRUD,采用的是JS做的后臺,因此用到了mongoose,下面這篇文章主要給大家介紹了關(guān)于在mongoose中填充外鍵的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法

    nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法

    這篇文章主要介紹了nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Node.js在child_process域和錯誤冒泡及捕獲實踐

    Node.js在child_process域和錯誤冒泡及捕獲實踐

    這篇文章主要為大家介紹了Node.js在child_process域和錯誤冒泡及捕獲實踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 利用node.js本地搭建HTTP服務(wù)器

    利用node.js本地搭建HTTP服務(wù)器

    這篇文章主要為大家詳細介紹了利用node.js本地搭建HTTP服務(wù)器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • node.js中的fs.rmdir方法使用說明

    node.js中的fs.rmdir方法使用說明

    這篇文章主要介紹了node.js中的fs.rmdir方法使用說明,本文介紹了fs.rmdir方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Nodejs+express+html5 實現(xiàn)拖拽上傳

    Nodejs+express+html5 實現(xiàn)拖拽上傳

    文件上傳是一個比較常見的功能,傳統(tǒng)的選擇方式的上傳比較麻煩,需要先點擊上傳按鈕,然后再找到文件的路徑,然后上傳。給用戶體驗帶來很大問題。html5開始支持拖拽上傳的需要的api。nodejs也是一個最近越來越流行的技術(shù),這也是自己第一次接觸nodejs。
    2014-08-08
  • 深入解析nodejs HTTP服務(wù)

    深入解析nodejs HTTP服務(wù)

    本篇文章主要介紹了深入解析nodejs HTTP服務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論

黔西| 建湖县| 耿马| 宿迁市| 通道| 基隆市| 三门峡市| 兴海县| 翁源县| 锡林郭勒盟| 镇坪县| 辽阳县| 太和县| 大竹县| 张家口市| 徐水县| 珠海市| 嘉鱼县| 玉环县| 施秉县| 蓝山县| 连云港市| 桦川县| 溧阳市| 海林市| 虹口区| 壶关县| 慈利县| 日土县| 株洲县| 山阳县| 石阡县| 新和县| 谢通门县| 靖远县| 两当县| 五河县| 方城县| 定安县| 宜阳县| 丰都县|