Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查某些属性值和其他仅存在的属性?_Javascript_Node.js_Unit Testing_Chai - Fatal编程技术网

Javascript 如何检查某些属性值和其他仅存在的属性?

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

使用chaijs,如何检查对象的某些属性是否等于某个对象,而其他属性仅存在于其中一个对象中

差不多

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哦,好的。谢谢:)