Node.js 学习记录 -- 02Assertion Testing( 断言测试 )

assert方法目录

  1.assert(value[, message])

  2.assert.deepEqual(actual, expected[, message])

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

  4.assert.doesNotThrow(block[, error][, message])

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

  6.assert.fail(message)

  7.assert.fail(actual, expected[, message[, operator[, stackStartFunction]]])

  8.assert.ifError(value)

  9.assert.notDeepEqual(actual, expected[, message])

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

  11.assert.notEqual(actual, expected[, message])

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

  13.assert.ok(value[, message])

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

  15.assert.throws(block[, error][, message])

 
1.assert(value[, message])
又名assert.ok相当于assert.equal(!!value, true, message)
用于判断value是否为true
value <any>  (any --- 可以是任何类型的参数)
message <any>
a.如果为true不会报错,没有返回值
b.如果为false(0/ undefinde/ null/ false/ ""),AssertionError会抛出错误,如果传入了message参数,则会显示message信息
 
2.assert.deepEqual(actual, expected[, message])
用于判断actual == expexted
actual <any>
expected <any>
message <any>
与javaScript中的 "==" 作用相同,比较时会进行隐式类型转换,主要注意的是Object类型的参数
创建一个assert-deepEqual.js脚本,代码如下
const assert = require('assert'); const obj1 = { a: { b: 1 } }; const obj2 = { a: { b: 2 } }; const obj3 = { a: { b: 1 } }; const obj4 = Object.create(obj1); assert.deepEqual(obj1, obj1); //True
assert.deepEqual(obj1, obj2); //Error
assert.deepEqual(obj1, obj3);
//True assert.deepEqual(obj1, obj4);
//Error
deepEqual并不会看它的原型,只会比较其自身( 即从构造函数继承过来的属性与构造函数相比依然不等 )
 
 
3.assert.deepStrictEqual(actual, expected[, message])
用于判断actual === expected
与javaScript中的 "===" 作用相同,比较的时候不会进行隐式类型转换
deepStrictEqual不止比较其自身是否一样,还会比较其构造函数、原型是否相同
 
例如:

  const assert = require("assert");

  var obj1 = {
    a: 1,
    b: {
      c: 2
    }
  };

  var obj2 = {
    a: 1,
    b: {
      c: 2
    }
  };
  var x = Object.create(obj1);
  var y = Object.create(obj2);

  assert.deepStrictEqual(x, y, "x,y不等");

如上,x 与 y 并不相等
 
4.assert.doesNotThrow(block[, error][, message])
执行block函数遇到错误的时候并不会终止程序的运行
相当于javaScript中的try catch
block <funtion>  (funciton -- 必须是函数)
error <function> | <RegExp>  (可以使函数也可以是正则表达式)
message <any>
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/hros/p/10970595.html