测试数组以包含具有特定键的对象:值

时间:2017-08-10 11:53:04

标签: javascript unit-testing chai

正如标题所说,我们发现自己需要检查一个数组是否包含一个属性等于某个元素的元素。

我们尝试搜索了几个小时,直到我们决定提出一个问题。 我们能够像这样解决问题:

input type="number"

但是我们希望有点像:

const playersRegs = created.gameLog.filter(e => e.nameType === eventTypes.PlayerReg);
expect(playersRegs).to.have.lengthOf(1);

如果我们遗漏了任何内容,请告诉我们,如果我们没有,请考虑添加此功能;)

2 个答案:

答案 0 :(得分:1)

您可以使用.some()代替:

const hasPlayersReg = created.gameLog.some(e => e.nameType === eventTypes.PlayerReg);
expect(hasPlayersReg).to.be.true;

或.find()如下:

const playersReg = created.gameLog.find(e => e.nameType === eventTypes.PlayerReg);
expect(playersReg ).to.not.be.undefined;

其余的看起来非常好。

答案 1 :(得分:1)

chai-things看起来正是您正在寻找的

和你的例子

expect(created.gameLog).to.include.something.that.has.property('nameType', eventTypes.PlayerReg);

正是它的语法