node學習: assert

主要是整理做爲學習筆記,方便往後複習
複製代碼

學習前準備

安裝 node

體驗assert

建立 test.js 文件node

// test.js
const assert = require('assert')

// 待測試代碼
function sum(...arr) {
  return arr.reduce((p, n) => p + n)
}

// 測試代碼
assert(sum(1, 2) === 3, ' 預期 sum(1, 2) 返回 3')
複製代碼

執行 test.js, node test.jsnpm

  1. 未報錯,則測試經過。
  2. assert.js 錯,則測試沒有經過

assert模塊很是簡單,它斷言一個表達式爲true。若是斷言失敗,就拋出Error函數

優化測試體驗

在一個 js 中常常會寫不少測試代碼,若是有一條報錯,那麼以後的測試將不會執行。有什麼辦法能夠執行一次,就知道哪些測試沒有經過呢? mocha, 這裏不對 mocha 過多講解,只給出一個例子學習

安裝 npm install mocha -g測試

// test.js
const assert = require('assert')

// 待測試代碼
function sum(...arr) {
  return arr.reduce((p, n) => p + n)
}

describe('個人第一次測試', () => {
  it('sum(1, 2) should return 3', () => {
    // 測試代碼
    assert(sum(1, 2) === 3, ' 預期 sum(1, 2) 返回 3')33')
  })
})
複製代碼

執行 mocha ./test.js優化

API

assert(value[, message])

  • value 爲 true 時,測試經過
  • value 爲 false 時,測試不經過經過,拋出帶有 message 的錯誤

assert.ok(value[, message])

assert(value[, message])ui

assert.equal(actual, expected[, message])

  • actual == expected 爲 true 時,測試經過
  • actual == expected 爲 false 時,測試不經過經過,拋出帶有 message 的錯誤

assert.strictEqual(actual, expected[, message])

  • actual === expected 爲 true 時,測試經過
  • actual === expected 爲 false 時,測試不經過經過,拋出帶有 message 的錯誤

assert.notStrictEqual(actual, expected[, message])

測試 actual 參數和 expected 參數之間的嚴格不相等,與 assert.notStrictEqual() 相反spa

assert.deepStrictEqual(actual, expected[, message])

測試 actual 參數和 expected 參數之間的深度相等。 深度相等意味着子對象的可枚舉的自身屬性也經過如下規則進行遞歸計算。code

  • 原始值使用全等運算符(===)比較。Set 的值與 Map 的鍵使用 SameValueZero 比較。
  • 對象的原型也使用全等運算符比較。
  • 對象的類型標籤要求相同。
  • 比較[對象包裝器][]時,其對象和裏面的值要求相同。

若是值不相等,則拋出 AssertionError,並將 message 屬性設置爲等於 message 參數的值對象

assert.notDeepStrictEqual(actual, expected[, message])

測試深度嚴格的不相等。 與 assert.deepStrictEqual() 相反。

assert.throws(fn[, error][, message])

指望 fn 函數拋出錯誤

  • error <RegExp> | <Function> | <Object> | <Error>

執行順序以下

  1. 判斷 fn 是否拋出錯誤
  2. 若是拋出錯誤,錯誤是否與 error 深度相等
  3. 拋出帶有 message 的錯誤

assert.doesNotThrow(fn[, error][, message])

斷言 fn 函數不會拋出錯誤

  • error <RegExp> | <Function>

若是 fn 拋出錯誤而且它與 error 參數指定的類型相同,則拋出 AssertionError

assert.ifError(value)

若是 value 不爲 undefinednull,則拋出 valu

assert.fail([message])

拋出帶有 message 的錯誤

相關文章
相關標籤/搜索