Chai测试对象密钥是否包含在一组密钥中



是否可以与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)

最新更新