我试图谷歌,但我找不到答案。我有一个函数可以生成一个可以有两个键之一的对象(比如键'a'和键'b')。我'期望'这个对象只包含两个键中的一个,而不是两个,当然不是没有。该对象必须包含键'a'OR'b'。
如何在Chai中创建“OR”?
答案 0 :(得分:1)
柴没有任何专注于这个利基案件。
解决方案是自己做腿部工作,然后使用assert.isTrue()
或同等的。
const
hasProp = Object.hasOwnProperty,
hasA = hasProp.call(myObject, 'a'),
hasB = hasProp.call(myObject, 'b'),
hasOne = hasA || hasB,
hasBoth = hasA && hasB;
assert.isTrue(
hasOne && !hasBoth,
'myObject must contain only one of a or b'
);
请注意,我已针对可读性和可扩展性进行了优化。如果您想对性能进行微优化并且只有两个密钥,那么这将在没有hasOne
和hasBoth
常量的情况下工作。
assert.isTrue(
hasA ? !hasB : hasB,
'myObject must contain only one of a or b'
);