時間が正しく解析されているかどうかをテストしたいのですが、オブジェクト全体ではなく、一部のプロパティのみをチェックすることに関心があります。この場合は、時間と分です。
使用してみました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)
ベストアンサー1
期待されるオブジェクトが受信したオブジェクトのサブセットであるかどうかを確認するには、次のtoMatchObject(object)
メソッドを使用する必要があります。
expect(parseTime('12:54')).toMatchObject({ hours: 12, minutes: 54})
またはexpect.objectContaining(object)
マッチャー:
expect(parseTime('12:54')).toEqual(expect.objectContaining({ hours: 12, minutes: 54}))
少し異なる方法で動作しますので、「.toMatchObject」と「objectContaining」の違いは何ですか?詳細については。
toContain()
項目が配列内にあるかどうかを確認するように設計されています。