一. 簡介
斷言是編程術語,表示為一些布爾表達式,程序員相信在程序中的某個特定點該表達式值為真,可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言而在部署時禁用斷言。同樣,程序投入運行后,最終用戶在遇到問題時可以重新啟用斷言。
使用斷言可以創建更穩定、品質更好且 不易于出錯的代碼。當需要在一個值為FALSE時中斷當前操作的話,可以使用斷言。【單元測試】必須使用斷言。
Node提供了 10 多個斷言測試的函數,用于測試不變式,我在文章中中將這 10 多個函數進行了分組,方便理解記憶。
【提示】在本文章中,expected 代表預期值,actual 代表實際值, message 代表自定義信息
二. 判斷值是否為真值
判斷值是否為真值有以下兩個斷言測試函數
2.1 assert(value[, message])
這個測試函數在 【Boolean(value)】 為 【true】時通過斷言測試,否則拋出 【AssertionError】
const assert = require("assert");assert("blue","第一個值為false時以我為錯誤信息拋出");assert(true,"第一個值為false時以我為錯誤信息拋出");上面一段代碼由于【Boolean(value)】全部為 true,所以全部通過斷言測試
assert(false,"第一個值為false時以我為錯誤信息拋出");// AssertionError [ERR_ASSERTION]: 第一個值為false時以我為錯誤信息拋出
上面代碼中 value 為false,則拋出一個帶有 message 屬性的 【AssertionError】,其中 message 屬性的值等于傳入的 message 參數的值。 【如果 message 參數為 undefined,則賦予默認的錯誤信息】。
assert(false);// AssertionError [ERR_ASSERTION]: false == true
上面代碼由于沒有指定【message】參數,拋出的為默認錯誤信息的【AssertionError】
2.2 assert.ok(value[, message])
assert.ok() 與 assert()的作用是一樣的,都是測試【value】是否為真值。而且用法也一樣,所以可以將assert()視為assert.ok()的語法糖
const assert = require("assert");assert.ok(true);assert.ok(1);上面代碼【Boolean(value)】全部為 true,所以全部斷言通過,下面是斷言不通過的情況,分別列出了默認錯誤信息
assert.ok(0);//AssertionError [ERR_ASSERTION]: 0 == trueassert.ok(false);//AssertionError [ERR_ASSERTION]: false == trueassert.ok(false,"自定義錯誤信息");//AssertionError [ERR_ASSERTION]: 自定義錯誤信息
三. 判斷預期值和實際值相等(==)
這一組里面有兩個測試函數,用于測試預期值與實際值是否相等,如果相等則斷言通過,否則拋出 【AssertionError】
3.1 assert.equal(actual, expected[, message])
新聞熱點
疑難解答
圖片精選