摘要:如果不想全局使用的話,可以直接使用帶的方法。遺留模式的子類,表示斷言失敗,模塊拋出的錯誤都是的實例。檢測參數和參數之間的嚴格不相等性,使用比較。使用提供的錯誤消息或默認錯誤消息拋出。錯誤值使用嵌套對象需要存在所有屬性。
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") // errorassert.AssertionError
Error的子類,表示斷言失敗,assert模塊拋出的錯誤都是AssertionError的實例。
類似于下面這個class,實際上的AssertionError是由ES5寫的,下面這個只是方便理解傳入的參數
interface IOptions { message?: string; // 設置錯誤的信息 actual?: any; // 設置錯誤實例上的實際值 expected?: any; // 設置錯誤實例上的期望值 operator?: string; // 設置用于比較的操作或觸發錯誤的斷言函數 stackStartFn(): any; // 生成的堆棧跟蹤將移除所有幀直到提供的函數 } 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參數值的AssertionError,如果未定義,為默認錯誤信息。
如果是Error的實例,則拋出Error實例。(以下關于message的使用都一樣)
檢測 actual參數和expected參數之間的嚴格相等性,使用sameValue比較。
assert.deepStrictEqual(actual: any, expected: any, message?: string | Error)檢測actual參數和expected參數之間的深度嚴格相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規則進行遞歸計算。
assert.notStrictEqual(actual: any, expected: any, message?: string | Error)檢測 actual參數和expected參數之間的嚴格不相等性,使用sameValue比較。
assert.notDeepStrictEqual(actual: any, expected: any, message?: string | Error)檢測actual參數和expected參數之間的深度嚴格不相等性,深度比較意味著子對象的可枚舉的自身屬性也通過以下規則進行遞歸計算。
assert.fail(message?: string | Error = "failed")使用提供的錯誤消息或默認錯誤消息拋出 AssertionError。
assert.throws(fn: function, error?: regExp | function | object | Error, message?: string)檢測fn函數拋出的錯誤是否與預期的錯誤error一樣。
fn為一個會拋出錯誤的函數
error可以為多種類型,作為與拋出的錯誤對比的樣本。
為regExp時,可以匹配拋出的錯誤。assert.throws(() => { throw new Error("it is a error") }, /^Error: it is a error$/);為function時,可以自定義驗證函數
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 不能是字符串。 如果提供了一個字符串作為第二個參數,則假定 error 被忽略,而字符串將用于 message。
assert.reject(asyncFn: function | promise, error?: regExp | function | object | Error, message?: string)assert.throws的異步版本。
asyncFn為一個function時立即執行該函數,如果該函數不返回promise,則返回一個被拒絕(reject)的 Promise。
如果該函數同步拋出一個錯誤,返回一個帶有該錯誤的被拒絕的 Promise。
等待Promise執行,檢測是否被拒絕。
assert.ifError(value: any)如果value不為null或者undefined就將value作為錯誤拋出。
在回調中測試error參數時,這很有用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109169.html
摘要:通過添加一個回調函數通常命名為給方法,就會知道,它應該等這個函數被調用的時候才能完成測試。此外提供了一些鉤子函數和。這些鉤子函數可以用于設置測試的先決條件或者對測試進行清理。鉤子函數會按照它們被定義的順序運行。 Mocha 的安裝和使用 1. 安裝 使用npm全局安裝: npm install -g mocha 安裝Mocha >= v3.0.0,npm的版本應該>=v1.4...
摘要:基本上,測試金字塔描述你應該編寫單元測試集成測試和端到端測試。集成測試要比端到端測試多,單元測試甚至要更多一些。應用程序單元測試編寫單元測試,是為了看看給定的模塊單元是否工作。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1754原文:https://blog.risingstack.com/node-hero-node-js-un...
摘要:斷言斷言是什么模塊提供了一組簡單的斷言測試,可用于測試不變量。環境是他們不必設置大量配置的環境,而是開發人員可以編寫代碼并從測試中獲得即時反饋的地方。每當測試時,結果將出現在您的拉取請求中,您的歷史記錄將在其控制面板中提供。 Node assert (斷言) 斷言是什么 assert 模塊提供了一組簡單的斷言測試,可用于測試不變量。 存在嚴格模式(strict)和遺留模式(legacy...
摘要:是一個測試框架,在中配合斷言庫實現單元測試。腳本命名方式為組件名。單元測試默認測試目錄下除了之外的所有文件,可在文件中修改。回收,一般在每個測試腳本測試完成后執行回收。等元素事件名稱配置項觸發和事件,既觸發點擊事件。 ??百度網盤??提取碼:u6C4在使用vue-cli創建項目的時候,會提示要不要安裝單元測試和e2e測試。...
摘要:目前已經成為了非常流行的的庫,被廣泛用于爬蟲或測試。然而,的幾乎所有的都是異步的,它返回的是一個。而提供了一系列的,使得測試變得簡單方便,測試同樣沒有問題。更多的可以參考的文檔鏈接在下方。 目前 puppeteer 已經成為了非常流行的 Node.js 的庫,被廣泛用于爬蟲或 UI 測試。 我也很歡喜 puppeteer 這個庫。然而,puppeteer 的幾乎所有的 API 都是異步...
閱讀 2171·2020-06-12 14:26
閱讀 2477·2019-08-29 16:41
閱讀 1884·2019-08-29 15:28
閱讀 2447·2019-08-26 13:43
閱讀 753·2019-08-26 13:37
閱讀 2771·2019-08-23 18:13
閱讀 2791·2019-08-23 15:31
閱讀 1013·2019-08-23 14:10