欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

學(xué)習(xí)node.js 斷言的使用詳解

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

assert模塊提供了一組簡(jiǎn)單的斷言測(cè)試,分嚴(yán)格模式(strict)和遺留模式(legacy),嚴(yán)格模式下,對(duì)比的方式比較嚴(yán)格,比如說(shuō),0與'0'比較,會(huì)報(bào)錯(cuò),但在遺留模式下是可以通過(guò)的。官方推薦使用嚴(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') // success
assert.strictEqual(0, '0') // error

assert.AssertionError

Error的子類(lèi),表示斷言失敗,assert模塊拋出的錯(cuò)誤都是AssertionError的實(shí)例。

類(lèi)似于下面這個(gè)class,實(shí)際上的AssertionError是由ES5寫(xiě)的,下面這個(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ò)以下規(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ò)以下規(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)

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

fn為一個(gè)會(huì)拋出錯(cuò)誤的函數(shù)

error可以為多種類(lèi)型,作為與拋出的錯(cuò)誤對(duì)比的樣本。

為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í),將僅測(cè)試驗(yàn)證對(duì)象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)證對(duì)象包含相同的正則表達(dá)式時(shí)才通過(guò)。

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

為Error時(shí),用instanceof檢測(cè)是否是該實(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í)行,檢測(cè)是否被拒絕。

assert.ifError(value: any)

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談node中的exports與module.exports的關(guān)系

    淺談node中的exports與module.exports的關(guān)系

    本篇文章主要介紹了淺談node中的exports與module.exports的關(guān)系,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • node 使用 async 控制并發(fā)的方法

    node 使用 async 控制并發(fā)的方法

    這篇文章主要介紹了node 使用 async 控制并發(fā)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • nodejs后臺(tái)集成ueditor富文本編輯器的實(shí)例

    nodejs后臺(tái)集成ueditor富文本編輯器的實(shí)例

    本篇文章主要介紹了nodejs后臺(tái)集成ueditor富文本編輯器的實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • Node.jsv16 版本安裝的實(shí)現(xiàn)

    Node.jsv16 版本安裝的實(shí)現(xiàn)

    本文主要介紹了Node.jsv16 版本安裝的實(shí)現(xiàn),文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • nodejs更改項(xiàng)目端口號(hào)的方法

    nodejs更改項(xiàng)目端口號(hào)的方法

    今天小編就為大家分享一篇nodejs更改項(xiàng)目端口號(hào)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • node.js中的fs.writeFile方法使用說(shuō)明

    node.js中的fs.writeFile方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.writeFile方法使用說(shuō)明,本文介紹了fs.writeFile的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • npm?install編譯時(shí)報(bào)"Cannot?read?properties?of?null?(reading?‘pickAlgorithm‘)"錯(cuò)誤的解決辦法

    npm?install編譯時(shí)報(bào)"Cannot?read?properties?of?null?(r

    這篇文章主要給大家介紹了關(guān)于npm?install編譯時(shí)報(bào)“Cannot?read?properties?of?null?(reading?‘pickAlgorithm‘)“錯(cuò)誤的解決辦法,文中將解決方法介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Node.js中Express框架使用axios同步請(qǐng)求(async+await)實(shí)現(xiàn)方法

    Node.js中Express框架使用axios同步請(qǐng)求(async+await)實(shí)現(xiàn)方法

    這篇文章主要介紹了Node.js中Express框架使用axios同步請(qǐng)求(async+await)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了express框架使用異步交互axios模塊實(shí)現(xiàn)同步請(qǐng)求的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2023-04-04
  • 使用koa-log4管理nodeJs日志筆記的使用方法

    使用koa-log4管理nodeJs日志筆記的使用方法

    這篇文章主要介紹了使用koa-log4管理nodeJs日志筆記的使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 從零開(kāi)始學(xué)習(xí)Node.js系列教程之設(shè)置HTTP頭的方法示例

    從零開(kāi)始學(xué)習(xí)Node.js系列教程之設(shè)置HTTP頭的方法示例

    這篇文章主要介紹了Node.js設(shè)置HTTP頭的方法,詳細(xì)分析了常見(jiàn)HTTP頭的功能、原理及相關(guān)設(shè)置操作技巧,需要的朋友可以參考下
    2017-04-04

最新評(píng)論