Nodejs Mocha Chai期望拥有一个或另一个密钥

时间:2016-05-07 00:20:56

标签: node.js mocha chai

我试图谷歌,但我找不到答案。我有一个函数可以生成一个可以有两个键之一的对象(比如键'a'和键'b')。我'期望'这个对象只包含两个键中的一个,而不是两个,当然不是没有。该对象必须包含键'a'OR'b'。

如何在Chai中创建“OR”?

1 个答案:

答案 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'
);

请注意,我已针对可读性和可扩展性进行了优化。如果您想对性能进行微优化并且只有两个密钥,那么这将在没有hasOnehasBoth常量的情况下工作。

assert.isTrue(
    hasA ? !hasB : hasB,
    'myObject must contain only one of a or b'
);