使用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
})
我想知道我有id
,createdOn
和updatedOn
属性,但实际上我并不关心它的值。
谢谢
答案 0 :(得分:0)
您可以使用模式匹配。 Chai JSON Pattern 插件可以帮助您做到这一点。
例如
const chai = require('chai');
const chaiJsonPattern = require('chai-json-pattern').default;
const chaiAsPromised = require('chai-as-promised');
chai.use(chaiJsonPattern);
chai.use(chaiAsPromised);
const { expect } = chai;
describe('38598544', () => {
it('should pass', () => {
const profilePromise = Promise.resolve({
__data: {
id: Math.random(),
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: Date.now(),
updatedOn: Date.now(),
},
});
return expect(profilePromise).to.eventually.be.fulfilled.to.have.property('__data').to.matchPattern(`{
"id": Number,
"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,
"updatedOn": Number,
}`);
});
});
测试结果:
38598544
✓ should pass
1 passing (28ms)