Nodejs Mocha Chai 期望有一把钥匙或另一把钥匙
Nodejs Mocha Chai Expect to have one key OR another
我试过 google 它,但我没有找到答案。我有一个生成对象的函数,该对象可以具有两个键之一(假设键 'a' 和键 'b')。我 'expect' 这个对象只包含两个键中的一个,而不是两者,当然也不 none。该对象必须包含键 'a' 或 'b'。
如何在 Chai 中创建这个 "OR"?
Chai 没有专门针对这个小众案例的任何东西。
解决方案是自己跑腿,然后使用 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'
);
我试过 google 它,但我没有找到答案。我有一个生成对象的函数,该对象可以具有两个键之一(假设键 'a' 和键 'b')。我 'expect' 这个对象只包含两个键中的一个,而不是两者,当然也不 none。该对象必须包含键 'a' 或 'b'。
如何在 Chai 中创建这个 "OR"?
Chai 没有专门针对这个小众案例的任何东西。
解决方案是自己跑腿,然后使用 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'
);