node断言函数

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

断言actualexpected相等,用==判断否则抛出错误信息,AssertionError:message,只测试可枚举对象,不测试原型对象。

const obj1 = {a:{b:1}};
const obj2 = {a:{b:2}};
const obj3 = {a:{b:1}};
const obj4 = Object.create(obj1);
assert.deepEqual(obj1,obj1);//自身相等
assert.deepEqual(obj1,obj3);//值相等
assert.deepEqual(obj1,obj4,["obj1 don't equal to obj4"]);//抛出AssertionError: obj1 don't equal to obj4,因为obj4的属性在原型上
assert.deepEqual(obj1,obj2,["obj1 don't equal to obj2"]);//抛出AssertionError: obj1 don't equal to obj2,若这里的message为undefined,则assert.deepEqual(obj1,obj2)抛出AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }

由于deepEqual测试可枚举属性,且原始值用==判断,因此,判断对象相等时也是枚举其属性到原始值再进行比较,而equal则直接用==比较对象。

 assert.equal({'a': 2}, {'a': '2'});//不通过,AssertionError [ERR_ASSERTION]: { a: 2 } == { a: '2' }

与之相反的方法assert.notDeepEqual();

deepStrictEqual(actual,expected,[,message])

===判断对象属性,比较原型。

assert.deepEqual({'a':2},{'a':'2'});//通过,2==‘2’
assert.deepStrictEqual({'a':2},{'a':'2'});//不通过2!==‘2’
assert.deepStrictEqual({'a':2},{'a':2});//通过,枚举属性比较

const date = new Date();
const object = {};
const fakeDate = {};
Object.setPrototypeOf(fakeDate, Date.prototype);

assert.deepStrictEqual(object, fakeDate);//不通过,原型不相等 抛出 AssertionError: {} deepStrictEqual Date {}
assert.deepEqual(object, fakeDate);//通过,不测试类型标签

assert.deepEqual(date, fakeDate);//通过,不测试类型标签
assert.deepStrictEqual(date, fakeDate);//通过,可理解为枚举空属性,所以相等,前面两个通过的断言也可这样理解。

直接利用===运算符比较的断言方法

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

assert.deepStrict(actual,expected,[,message]);
assert.notDeepStrict(actual,expected,[,message]);

而前面的deepStrictEqual()方法在判断时将枚举属性。

利用==运算符比较的断言方法

assert.equal(actual,expected,[,message]); 
assert.notEqual(actual,expected,[,message]); 

其他方法

assert.ok(value,[,message])//判断value是否是真值
assert.ifError(value)//若value为真值,则抛出value
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值