2017-08-10 3 views
0

タイトルには、自分のプロパティの1つが何かに等しい要素が配列に含まれているかどうかを確認する必要があるという状況があります。特定のキーを持つオブジェクトを含めるように配列をテストする:value

私たちは問題を提起したいと思うまで数時間試してみました。 我々はこのような問題を解決することができました:

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

しかし、我々は少しのような何かを期待していた:私たちは私たちに知らせてくださいと私たちはdidntの場合は追加することを検討してください何かを逃した場合

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

この機能は、あなたが代わりに)(.someを使用することができます)

答えて

0

chai-thingsあなたは

とあなたの例

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

を探している正確に何になりそうだ一致する要素がありません場合は、 `undefined`を返しfind`それ

1

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

の正確な構文'です。おそらく常に 'true'または' false'を返す 'some'を使う方が良いでしょうか? – user3297291

+1

良い点。しかしチャイも未定義のチェックをしていますので更新しました。それは実際にはさらに良いので、いくつかを追加しました –

+0

私は1つの全体のテストを書くことができる方法はありますか?次のようにします:expect(created.gameLog).to.include.something.that.has.property( 'nameType'、eventTypes.PlayerReg); –

関連する問題