是否可以与Chai一起检查对象键是否包含在一组固定的键中(较少的属性应返回ok,多余的属性应失败(。
类似于:expect(actualObjectKeys).to.be.contained.in(expectedKeysArray)
我尝试了have.keys
,但实际值和预期值必须相同。也尝试使用expect(actual).to.include.keys(expected)
,但如果有更多密钥,则返回ok。
我只是在预期的密钥上打了个圈,并检查了每一个密钥以使其发挥作用,但我想知道是否有更好的方法。
感谢
您可以使用.include(val[,msg](语言链和.members(set[,msg](方法。
在链的早期添加
.include
,以要求目标的成员是预期成员的超集。
例如
import { expect } from 'chai';
describe('60829224', () => {
const obj = { a: '0', b: '1', c: '2' };
it('should pass if the fixed set of keys has less key', () => {
const actualObjectKeys = Object.keys(obj);
expect(actualObjectKeys).to.include.members(['a', 'b']);
});
it('should not pass if the fixed set of keys has extra key', () => {
const actualObjectKeys = Object.keys(obj);
expect(actualObjectKeys).to.not.include.members(['a', 'b', 'c', 'd']);
expect(actualObjectKeys).to.not.include.members(['a', 'd']);
});
});
测试结果:
60829224
✓ should pass if the fixed set of keys has less key
✓ should not pass if the fixed set of keys has extra key
2 passing (19ms)