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 的错误

相关文章
相关标签/搜索