node.js学习之断言assert的使用( 二 )


四. 判断预期值和实际值全等(===)
这组测试函数是用于判断预期值和实际值是否深度相等的 , 内部使用的是(===) , 所以对象的原型也会进行比较 , 值得类型也是比较的范围 。 这组也有两个测试函数 。
4.1 assert.deepStrictEqual(actual, expected[, message])
由于内部使用的是全等(===) , 所以对象的原型也会计入比较的范围

node.js学习之断言assert的使用

文章插图

8上面代码使用了deepEqual()和deepStrictEqual()进行了断言测试 , son1 和 son2 分别继承与两个不同的对象 , 但是拥有相同的属性值 。 可以看出【deepEqual()是不会考虑对象的原型的 , deepStrictEqual()将原型对象列入了比较对象】
4.2 assert.strictEqual(actual, expected[, message])
strictEqual()是equal()的加强 , 考虑了数据类型;如果actual === expected,则断言通过 , 否则抛出AssertionError , message?message:默认错误信息 。

node.js学习之断言assert的使用

文章插图

9【提示!!】对引用类型还是永远通不过【strictEqual()】断言测试
五、判断预期值和实际值不相等(!=)
上面总结到了判断预期值和实际值相等 , 这儿总结一下判断预期值和实际值不想等的两个测试函数 , 实际上就是上面 (三) 的逆运算 。
5.1 assert.notEqual(actual, expected[, message])
【notEqual()】为 【equal() 】的逆运算 , 如果 actual!= expected 则断言通过 , 同样对于值类型是单纯对值进行比较 , 对应引用类型比较的是值得引用

node.js学习之断言assert的使用

文章插图

10上面的代码是对引用类型进行的断言测试 , 【notEqual() 】对于两个对象的测试通过是一个【恒成立】的结果 。
5.2 assert.notDeepEqual(actual, expected[, message])
【notDeepEqual() 】为 【deepEqual() 】的逆运算 , 如果 actual!= expected 则断言通过 , 不同于notEqual()的是对于引用类型是对值进行判断 , 不比对原型、不可枚举属性,只比对自有可枚举属性,断言通过 。

node.js学习之断言assert的使用

文章插图

11上面代码中最后一个表达式断言通过 , 说明【不比对原型、不可枚举属性,只比对自有可枚举属性】
【node.js学习之断言assert的使用】【注意!!】与notEqual的区别 , 也就是deepEqual和equal的区别 , 在引用数据类型的时候 , deepEqual是比较的值而非引用 , equal对比的是引用 , 所以引用类型在equal的时候是永远无法通过断言测试的 , 以此类推 , 引用类型在notEqual时是永远否可以通过断言测试的 。
六. 判断预期值和实际值严格不相等(!==)
上面总结到了判断预期值和实际值严格相等 , 这儿总结一下判断预期值和实际值严格不相等的两个测试函数 , 实际上就是上面 (四) 的逆运算
6.1 assert.notStrictEqual(actual, expected[, message])
如果actual与expected不 !== 则断言通过 ,  与 assert.deepStrictEqual() 相反

node.js学习之断言assert的使用

文章插图

126.2 assert.notDeepStrictEqual(actual, expected[, message])
notDeepStrictEqual()就是deepStrictEqual()的逆运算 , 如果 actual !== expected 则断言通过 , 否则抛出AssertionError 。

推荐阅读