成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

zero / 758人閱讀

摘要:如果不想全局使用的話,可以直接使用帶的方法。遺留模式的子類,表示斷言失敗,模塊拋出的錯(cuò)誤都是的實(shí)例。檢測(cè)參數(shù)和參數(shù)之間的嚴(yán)格不相等性,使用比較。使用提供的錯(cuò)誤消息或默認(rèn)錯(cuò)誤消息拋出。錯(cuò)誤值使用嵌套對(duì)象需要存在所有屬性。

assert模塊提供了一組簡單的斷言測(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") // 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)

檢測(cè)是否為真值,是assert.ok的別名。

assert.ok(value: any, message?: string | Error)

檢測(cè)value是否為真值。
如果不為真值,拋出屬性messagemessage參數(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。

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

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

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

error可以為多種類型,作為與拋出的錯(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í)才通過。

assert.throws(() => {
  throw err;
}, {
  name: "TypeError",
  message: "錯(cuò)誤值"
  info: {
    nested: true,
    baz: "text"
    // 使用嵌套對(duì)象需要存在所有屬性。
    // 否則驗(yàn)證將失敗。
    // 無法對(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í),這很有用。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109169.html

相關(guān)文章

  • 單元測(cè)試學(xué)習(xí)總結(jié)

    摘要:通過添加一個(gè)回調(diào)函數(shù)通常命名為給方法,就會(huì)知道,它應(yīng)該等這個(gè)函數(shù)被調(diào)用的時(shí)候才能完成測(cè)試。此外提供了一些鉤子函數(shù)和。這些鉤子函數(shù)可以用于設(shè)置測(cè)試的先決條件或者對(duì)測(cè)試進(jìn)行清理。鉤子函數(shù)會(huì)按照它們被定義的順序運(yùn)行。 Mocha 的安裝和使用 1. 安裝 使用npm全局安裝: npm install -g mocha 安裝Mocha >= v3.0.0,npm的版本應(yīng)該>=v1.4...

    netScorpion 評(píng)論0 收藏0
  • Node Hero】9. Node.js 單元測(cè)試

    摘要:基本上,測(cè)試金字塔描述你應(yīng)該編寫單元測(cè)試集成測(cè)試和端到端測(cè)試。集成測(cè)試要比端到端測(cè)試多,單元測(cè)試甚至要更多一些。應(yīng)用程序單元測(cè)試編寫單元測(cè)試,是為了看看給定的模塊單元是否工作。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1754原文:https://blog.risingstack.com/node-hero-node-js-un...

    104828720 評(píng)論0 收藏0
  • 自動(dòng)化測(cè)試(未完,后續(xù)學(xué)習(xí)之后會(huì)補(bǔ)充更具體)

    摘要:斷言斷言是什么模塊提供了一組簡單的斷言測(cè)試,可用于測(cè)試不變量。環(huán)境是他們不必設(shè)置大量配置的環(huán)境,而是開發(fā)人員可以編寫代碼并從測(cè)試中獲得即時(shí)反饋的地方。每當(dāng)測(cè)試時(shí),結(jié)果將出現(xiàn)在您的拉取請(qǐng)求中,您的歷史記錄將在其控制面板中提供。 Node assert (斷言) 斷言是什么 assert 模塊提供了一組簡單的斷言測(cè)試,可用于測(cè)試不變量。 存在嚴(yán)格模式(strict)和遺留模式(legacy...

    姘存按 評(píng)論0 收藏0
  • 深入Vue3+TypeScript技術(shù)棧-coderwhy大神新課 王紅元

    摘要:是一個(gè)測(cè)試框架,在中配合斷言庫實(shí)現(xiàn)單元測(cè)試。腳本命名方式為組件名。單元測(cè)試默認(rèn)測(cè)試目錄下除了之外的所有文件,可在文件中修改。回收,一般在每個(gè)測(cè)試腳本測(cè)試完成后執(zhí)行回收。等元素事件名稱配置項(xiàng)觸發(fā)和事件,既觸發(fā)點(diǎn)擊事件。 ??百度網(wǎng)盤??提取碼:u6C4在使用vue-cli創(chuàng)建項(xiàng)目的時(shí)候,會(huì)提示要不要安裝單元測(cè)試和e2e測(cè)試。...

    番茄西紅柿 評(píng)論0 收藏2637
  • Rize - 一個(gè)可以讓你簡單、優(yōu)雅使用 puppeteer Node.js

    摘要:目前已經(jīng)成為了非常流行的的庫,被廣泛用于爬蟲或測(cè)試。然而,的幾乎所有的都是異步的,它返回的是一個(gè)。而提供了一系列的,使得測(cè)試變得簡單方便,測(cè)試同樣沒有問題。更多的可以參考的文檔鏈接在下方。 目前 puppeteer 已經(jīng)成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測(cè)試。 我也很歡喜 puppeteer 這個(gè)庫。然而,puppeteer 的幾乎所有的 API 都是異步...

    JeOam 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<