web-dev-qa-db-ja.com

Jestを使用してオブジェクトの一部をテストするにはどうすればよいですか?

時間が正しく解析されることをテストしたいのですが、オブジェクト全体ではなくプロパティの一部のみをチェックすることに興味があります。この場合、時間と分。

expect(object).toContain(value)を使用してみましたが、以下のスニペットでわかるように、オブジェクトには目的のプロパティが含まれており、正しい値がありますが、失敗します。

● Calendar > CalendarViewConfig › it should parse time

expect(object).toContain(value)

Expected object:
  {"display": "12:54", "full": 774, "hour": 12, "hours": 12, "minutes": 54, "string": "12:54"}
To contain value:
  {"hours": 12, "minutes": 54}

  67 |   it('it should parse time', () => {
  68 |     ...
> 69 |     expect(parseTime('12:54')).toContain({ hours: 12, minutes: 54})
  70 |   })

  at Object.<anonymous> (src/Components/Views/Calendar/CalendarViewConfig.test.js:69:32)
13
mancristiana

予想されるオブジェクトが受信したオブジェクトのサブセットであるかどうかを確認するには、toMatchObject(object)メソッドを使用する必要があります。

_expect(parseTime('12:54')).toMatchObject({ hours: 12, minutes: 54})
_

またはexpect.objectContaining(object) matcher:

_expect(parseTime('12:54')).toEqual(expect.objectContaining({ hours: 12, minutes: 54}))
_

それらはわずかに異なる方法で動作します。詳細については 「。toMatchObject」と「objectContaining」の違いは何ですか をご覧ください。

toContain()は、アイテムが配列内にあることを確認するように設計されています。

27
thorin87