Javascript 如何检查某些属性值和其他仅存在的属性?
使用chaijs,如何检查对象的某些属性是否等于某个对象,而其他属性仅存在于其中一个对象中 差不多Javascript 如何检查某些属性值和其他仅存在的属性?,javascript,node.js,unit-testing,chai,Javascript,Node.js,Unit Testing,Chai,使用chaijs,如何检查对象的某些属性是否等于某个对象,而其他属性仅存在于其中一个对象中 差不多 return expect(profilePromise) .to.eventually.be.fulfilled .to.have.property('__data') .to.any.deep.equal({ id: Number, <--------- here firstName: faceboo
return expect(profilePromise)
.to.eventually.be.fulfilled
.to.have.property('__data')
.to.any.deep.equal({
id: Number, <--------- here
firstName: facebookProfile.first_name,
lastName: facebookProfile.last_name,
email: facebookProfile.email,
gender: facebookProfile.gender,
isPopularVerified: facebookProfile.is_verified,
isVerified: facebookProfile.verified,
locale: facebookProfile.locale,
timezone: facebookProfile.timezone,
createdOn: Number, <--------- here
updatedOn: Number, <--------- here
})
returnexpect(profilePromise)
.最终实现
.to.have.property(“数据”)
.到.任何.深.相等({
id:Number,您可以使用模式匹配。插件可以帮助您做到这一点
例如
const chai=require('chai');
const chaiJsonPattern=require('chai-json-pattern')。默认值;
const chaiasprowed=require('chai-as-assowed');
使用(柴松模式);
柴。使用(柴);
const{expect}=chai;
描述('38598544',()=>{
它('应该通过',()=>{
const profilePromise=Promise.resolve({
__数据:{
id:Math.random(),
名字:'facebookProfile.first_name',
lastName:'facebookProfile.last_name',
电子邮件:“facebookProfile.email”,
性别:'facebookProfile.gender',
isPopularVerified:“facebookProfile.is_verified”,
isVerified:'facebookProfile.verified',
区域设置:“facebookProfile.locale”,
时区:“facebookProfile.timezone”,
createdOn:Date.now(),
updatedOn:Date.now(),
},
});
将expect(profilePromise).to.finally.be.completed.to.have.property(“\uu data”).to.matchPattern返回到expect(profilePromise).to.finally.be.impleted.to.have.property(`{
“id”:编号,
“名字”:“facebookProfile.first_name”,
“姓氏”:“facebookProfile.last_name”,
“电子邮件”:“facebookProfile.email”,
“性别”:“facebookProfile.gender”,
“isPopularVerified”:“facebookProfile.is_verified”,
“已验证”:“facebookProfile.verified”,
“语言环境”:“facebookProfile.locale”,
“时区”:“facebookProfile.timezone”,
“createdOn”:数字,
“updatedOn”:编号,
}`);
});
});
测试结果:
38598544
✓ should pass
1 passing (28ms)
你可以使用模式匹配。插件可以帮助你做到这一点
例如
const chai=require('chai');
const chaiJsonPattern=require('chai-json-pattern')。默认值;
const chaiasprowed=require('chai-as-assowed');
使用(柴松模式);
柴。使用(柴);
const{expect}=chai;
描述('38598544',()=>{
它('应该通过',()=>{
const profilePromise=Promise.resolve({
__数据:{
id:Math.random(),
名字:'facebookProfile.first_name',
lastName:'facebookProfile.last_name',
电子邮件:“facebookProfile.email”,
性别:'facebookProfile.gender',
isPopularVerified:“facebookProfile.is_verified”,
isVerified:'facebookProfile.verified',
区域设置:“facebookProfile.locale”,
时区:“facebookProfile.timezone”,
createdOn:Date.now(),
updatedOn:Date.now(),
},
});
将expect(profilePromise).to.finally.be.completed.to.have.property(“\uu data”).to.matchPattern返回到expect(profilePromise).to.finally.be.impleted.to.have.property(`{
“id”:编号,
“名字”:“facebookProfile.first_name”,
“姓氏”:“facebookProfile.last_name”,
“电子邮件”:“facebookProfile.email”,
“性别”:“facebookProfile.gender”,
“isPopularVerified”:“facebookProfile.is_verified”,
“已验证”:“facebookProfile.verified”,
“语言环境”:“facebookProfile.locale”,
“时区”:“facebookProfile.timezone”,
“createdOn”:数字,
“updatedOn”:编号,
}`);
});
});
测试结果:
38598544
✓ should pass
1 passing (28ms)
与Jasmine相比,这是Chai所缺少的。我想目前这可以通过自定义断言来处理,或者可以将deep equal更改为deep include。@estus哦,好的。谢谢:)与Jasmine相比,这是Chai所缺少的。我想目前这可以通过自定义断言来处理,或者可以将deep equal更改为deep include。@estus哦,好的。谢谢:)