美文网首页
2019-07-28 Node Assert

2019-07-28 Node Assert

作者: 孙新强 | 来源:发表于2019-07-28 12:06 被阅读0次

assert.AssertionError

Error的子类

new assert.AssertionError(options)

  • message
  • actual 实际输入
  • expected 期待输入
  • operator 比较的操作(或触发错误的断言函数)
  • stackStartFn 移除所有堆栈跟踪 只保留当前 不知道里面能写点啥

严格模式

const assert = require('assert').strict;

assert.ok(value[, message])

参见 assert()

assert(value[, message])

assert.ok别名

等同 assert.equal(!!value, true, message)

  • value 判断value是否为真
  • message 为假抛出的信息

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

  • 原始值使用 SameValue比较 (Object.is)

关于相等的判断

  • 对象的类型标签(type tag)应该相同
var a;
Object.prototype.toString.call(a); // [object Undefined]
Object.prototype.toString.call([]); // [object Array]

type tag 完整列表--tc39.es

  • 使用严格相等(Strict equal ===)比较来比较对象的原型
  • 只考虑可枚举自身属性
  • 始终比较 Error 的名称和消息,即使这些不是可枚举的属性
let err1 = new Error({
  name: 'err',
  message: 'message'
});
let err2 = new Error({
  name: 'err',
  message: 'message'
});
// AssertionError [ERR_ASSERTION]: Input objects identical but not reference equal
assert.strictEqual(err1, err2); 
  • 可枚举的自身 Symbol 属性也会比较
  • 对象封装器作为对象和解封装后的值都进行比较

对象封装器: 待补充

  • Object 属性的比较是无序的。
  • Map 键名与 Set 子项的比较是无序的
  • 当两边的值不相同或遇到循环引用时,递归停止。
  • WeakMap 和 WeakSet 的比较不依赖于它们的值

Map Set WeakMap WeakSet : 待补充

assert.doesNotReject(asyncFn[, error][, message])

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

  • 两个类似 断言不会出现错误
  • doesNotReject 支持异步

assert.fail([message])

抛出个错误

  • message <string> | <Error>

assert.ifError(value)

  • 如果 value 不为 undefined 或 null,则抛出 value。
  • 只有 undefined 和 null能通过

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

参见assert.deepStrictEqual

assert.notDeepStrictEqual({ a: 1 }, { a: '1' });// 通过

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

  • 测试 actual 参数和 expected 参数之间的严格相等性,使用 SameValue比较。

SameValue 关于相等的判断

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

参见 assert.strictEqual

测试 actual 参数和 expected 参数之间的严格不相等,使用 SameValue比较

assert.rejects(asyncFn[, error][, message])

  • 期望 asyncFn 函数抛出错误 或rejected Promise
  • 如果指定第二个参数 那么 要求抛出的错误 和 第二个参数相同 或者满足第二个的条件
  • message 自定义抛出错误的信息 不符合后 抛出的错误

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

和rejects差不多

相关文章

  • 2019-07-28 Node Assert

    assert.AssertionError Error的子类 new assert.AssertionError(...

  • Node assert

    1.assert(value[,message]) assert(value[,message]) = asser...

  • Node Assert

    1. 关于Node Assert 顾名思义应该就是跑测试用例里的断言吧,里面有各种接口判断 assert() 和t...

  • Node Assert

    Node Assert expected 代表预期值,actual 代表实际值, message 代表自定义信息 ...

  • Node.js Assertion Testing

    Assert Stability: 2 - Stable 稳定 Assert - Node.js 的断言库 在 N...

  • (1)Node.js之assert

    assert用来做什么? assert作为Node的内置模块主要用于断言。assert模块提供了一些简单的测试功能...

  • 【node】assert 断言

    引入assert 创建错误消息 AssertionError 调用: 手动创建 自动创建

  • Node assert的用法

    assert模块提供了断言测试的函数,用于测试不变式 有strict和legacy两种模式,建议只使用strict...

  • node系列之assert(断言)

    地址 传送门 说明 提供了简单地断言机制,方便在测试阶段快速地发现并定位问题。需要注意的是,这并不是一个测试框架,...

  • Node文档笔记-assert断言

    assert 模块 提供了断言测试的函数,用于测试不变式。一直觉得最直观的学习模式是首先抛出demo,然后通过对d...

网友评论

      本文标题:2019-07-28 Node Assert

      本文链接:https://www.haomeiwen.com/subject/ccburctx.html