测试数组以包含具有特定键的 object:值
Test array to include an object with a certain key: value
正如标题所说,我们发现自己处于需要检查数组是否包含其属性之一等于某物的元素的情况。
我们尝试并搜索了几个小时,直到我们决定提出有关它的问题。
我们能够像这样解决问题:
const playersRegs = created.gameLog.filter(e => e.nameType === eventTypes.PlayerReg);
expect(playersRegs).to.have.lengthOf(1);
但我们希望有点像:
expect(created.gameLog).to.include.something.that.has.property('nameType', eventTypes.PlayerReg);
如果我们遗漏了什么,请告诉我们,如果我们没有,请考虑添加此功能;)
您可以改用 .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;
其余的似乎都很好。
chai-things 看起来正是您要找的东西
和你的例子
expect(created.gameLog).to.include.something.that.has.property('nameType', eventTypes.PlayerReg);
正是它的语法
正如标题所说,我们发现自己处于需要检查数组是否包含其属性之一等于某物的元素的情况。
我们尝试并搜索了几个小时,直到我们决定提出有关它的问题。 我们能够像这样解决问题:
const playersRegs = created.gameLog.filter(e => e.nameType === eventTypes.PlayerReg);
expect(playersRegs).to.have.lengthOf(1);
但我们希望有点像:
expect(created.gameLog).to.include.something.that.has.property('nameType', eventTypes.PlayerReg);
如果我们遗漏了什么,请告诉我们,如果我们没有,请考虑添加此功能;)
您可以改用 .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;
其余的似乎都很好。
chai-things 看起来正是您要找的东西
和你的例子
expect(created.gameLog).to.include.something.that.has.property('nameType', eventTypes.PlayerReg);
正是它的语法