摘要:如果不想全局使用的話,可以直接使用帶的方法。遺留模式的子類,表示斷言失敗,模塊拋出的錯(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") // errorassert.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是否為真值。
如果不為真值,拋出屬性message為message參數(shù)值的AssertionError,如果未定義,為默認(rèn)錯(cuò)誤信息。
如果是Error的實(shí)例,則拋出Error實(shí)例。(以下關(guān)于message的使用都一樣)
檢測(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。
等待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
摘要:通過添加一個(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...
摘要:基本上,測(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...
摘要:斷言斷言是什么模塊提供了一組簡單的斷言測(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...
摘要:是一個(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è)試。...
摘要:目前已經(jīng)成為了非常流行的的庫,被廣泛用于爬蟲或測(cè)試。然而,的幾乎所有的都是異步的,它返回的是一個(gè)。而提供了一系列的,使得測(cè)試變得簡單方便,測(cè)試同樣沒有問題。更多的可以參考的文檔鏈接在下方。 目前 puppeteer 已經(jīng)成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測(cè)試。 我也很歡喜 puppeteer 這個(gè)庫。然而,puppeteer 的幾乎所有的 API 都是異步...
閱讀 2189·2020-06-12 14:26
閱讀 2492·2019-08-29 16:41
閱讀 1890·2019-08-29 15:28
閱讀 2459·2019-08-26 13:43
閱讀 759·2019-08-26 13:37
閱讀 2781·2019-08-23 18:13
閱讀 2804·2019-08-23 15:31
閱讀 1022·2019-08-23 14:10