assert.notDeepEqual(obj1,obj2,'actual equal to expected');
// 断言通过
assert.notDeepEqual(obj1,obj3,'actual equal to expected');
// 断言通过
上面代码中最后一个表达式断言通过,说明【不比对原型、不可枚举属性,只比对自有可枚举属性】
【注意!!】与notEqual的区别,也就是deepEqual和equal的区别,在引用数据类型的时候,deepEqual是比较的值而非引用,equal对比的是引用,所以引用类型在equal的时候是永远无法通过断言测试的,以此类推,引用类型在notEqual时是永远否可以通过断言测试的。
六. 判断预期值和实际值严格不相等(!==)
上面总结到了判断预期值和实际值严格相等,这儿总结一下判断预期值和实际值严格不相等的两个测试函数,实际上就是上面 (四) 的逆运算
6.1 assert.notStrictEqual(actual, expected[, message])
如果actual与expected不 !== 则断言通过, 与
assert.deepStrictEqual() 相反
assert.notStrictEqual("1", 1);
// 断言通过assert.notStrictEqual("1", "1");
// AssertionError [ERR_ASSERTION]: '1' !== '1'
上面代码是对值类型进行的断言测试,可以看出【
notStrictEqual() 】考虑了数据类型
assert.notStrictEqual({ a: "foo" }, { a: "foo" });
assert.notStrictEqual(() => { }, () => { });
assert.notStrictEqual([], []);上面代码是对引用类型的测试,全部通过,以上表达式是恒通过的。
6.2 assert.notDeepStrictEqual(actual, expected[, message])
notDeepStrictEqual()就是
deepStrictEqual()的逆运算,如果
actual !== expected 则断言通过,否则抛出AssertionError。
assert.notDeepStrictEqual({ a: '1' }, { a: 1 });
//断言通过assert.notDeepStrictEqual({ a: '1' }, { a: "1" });
//AssertionError [ERR_ASSERTION]: { a: '1' } notDeepStrictEqual { a: '1' }
七. 断言错误并抛出
这一组有 四 个(可以说是 三 个)测试函数,是对错误进行的处理。
7.1 assert.fail(message)
这个测试函数不多说,可以看错是下一个函数的重载,用于主动抛出带有【message】属性的【AssertionError】对象
assert.fail("自定义错误信息");
// AssertionError [ERR_ASSERTION]: 自定义错误信息7.2 assert.fail(actual, expected[, message[, operator[, stackStartFunction]]])
该测试函数用于主动抛出自定义错误信息,抛出错误信息格式:【actual 参数 + operator 参数 + expected 参数】









