摘要:如果不想全局使用的話,可以直接使用帶的方法。遺留模式的子類,表示斷言失敗,模塊拋出的錯誤都是的實例。檢測參數(shù)和參數(shù)之間的嚴(yán)格不相等性,使用比較。使用提供的錯誤消息或默認(rèn)錯誤消息拋出。錯誤值使用嵌套對象需要存在所有屬性。
assert模塊提供了一組簡單的斷言測試,分嚴(yán)格模式(strict)和遺留模式(legacy),嚴(yán)格模式下,對比的方式比較嚴(yán)格,比如說,0與"0"比較,會報錯,但在遺留模式下是可以通過的。官方推薦使用嚴(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模塊拋出的錯誤都是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,如果未定義,為默認(rèn)錯誤信息。
如果是Error的實例,則拋出Error實例。(以下關(guān)于message的使用都一樣)
檢測 actual參數(shù)和expected參數(shù)之間的嚴(yán)格相等性,使用sameValue比較。
assert.deepStrictEqual(actual: any, expected: any, message?: string | Error)檢測actual參數(shù)和expected參數(shù)之間的深度嚴(yán)格相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規(guī)則進行遞歸計算。
assert.notStrictEqual(actual: any, expected: any, message?: string | Error)檢測 actual參數(shù)和expected參數(shù)之間的嚴(yán)格不相等性,使用sameValue比較。
assert.notDeepStrictEqual(actual: any, expected: any, message?: string | Error)檢測actual參數(shù)和expected參數(shù)之間的深度嚴(yán)格不相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規(guī)則進行遞歸計算。
assert.fail(message?: string | Error = "failed")使用提供的錯誤消息或默認(rèn)錯誤消息拋出 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; // 正則表達(dá)式只有當(dāng)驗證對象包含相同的正則表達(dá)式時才通過。 assert.throws(() => { throw err; }, { name: "TypeError", message: "錯誤值" info: { nested: true, baz: "text" // 使用嵌套對象需要存在所有屬性。 // 否則驗證將失敗。 // 無法對嵌套屬性使用正則表達(dá)式! } });為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。
等待Promise執(zhí)行,檢測是否被拒絕。
assert.ifError(value: any)如果value不為null或者undefined就將value作為錯誤拋出。
在回調(diào)中測試error參數(shù)時,這很有用。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/109169.html
摘要:通過添加一個回調(diào)函數(shù)通常命名為給方法,就會知道,它應(yīng)該等這個函數(shù)被調(diào)用的時候才能完成測試。此外提供了一些鉤子函數(shù)和。這些鉤子函數(shù)可以用于設(shè)置測試的先決條件或者對測試進行清理。鉤子函數(shù)會按照它們被定義的順序運行。 Mocha 的安裝和使用 1. 安裝 使用npm全局安裝: npm install -g mocha 安裝Mocha >= v3.0.0,npm的版本應(yīng)該>=v1.4...
摘要:基本上,測試金字塔描述你應(yīng)該編寫單元測試集成測試和端到端測試。集成測試要比端到端測試多,單元測試甚至要更多一些。應(yīng)用程序單元測試編寫單元測試,是為了看看給定的模塊單元是否工作。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1754原文:https://blog.risingstack.com/node-hero-node-js-un...
摘要:斷言斷言是什么模塊提供了一組簡單的斷言測試,可用于測試不變量。環(huán)境是他們不必設(shè)置大量配置的環(huán)境,而是開發(fā)人員可以編寫代碼并從測試中獲得即時反饋的地方。每當(dāng)測試時,結(jié)果將出現(xiàn)在您的拉取請求中,您的歷史記錄將在其控制面板中提供。 Node assert (斷言) 斷言是什么 assert 模塊提供了一組簡單的斷言測試,可用于測試不變量。 存在嚴(yán)格模式(strict)和遺留模式(legacy...
摘要:是一個測試框架,在中配合斷言庫實現(xiàn)單元測試。腳本命名方式為組件名。單元測試默認(rèn)測試目錄下除了之外的所有文件,可在文件中修改?;厥?,一般在每個測試腳本測試完成后執(zhí)行回收。等元素事件名稱配置項觸發(fā)和事件,既觸發(fā)點擊事件。 ??百度網(wǎng)盤??提取碼:u6C4在使用vue-cli創(chuàng)建項目的時候,會提示要不要安裝單元測試和e2e測試。...
摘要:目前已經(jīng)成為了非常流行的的庫,被廣泛用于爬蟲或測試。然而,的幾乎所有的都是異步的,它返回的是一個。而提供了一系列的,使得測試變得簡單方便,測試同樣沒有問題。更多的可以參考的文檔鏈接在下方。 目前 puppeteer 已經(jīng)成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測試。 我也很歡喜 puppeteer 這個庫。然而,puppeteer 的幾乎所有的 API 都是異步...
閱讀 2268·2020-06-12 14:26
閱讀 2551·2019-08-29 16:41
閱讀 1953·2019-08-29 15:28
閱讀 2498·2019-08-26 13:43
閱讀 824·2019-08-26 13:37
閱讀 2835·2019-08-23 18:13
閱讀 2873·2019-08-23 15:31
閱讀 1075·2019-08-23 14:10