1. ホーム
  2. javascript

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

2023-07-09 14:21:26

質問

私は時間が正しくパースされることをテストしたいと思います。私はオブジェクト全体ではなく、いくつかのプロパティをチェックすることに興味があるだけです。この場合、時間と分です。

私は 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)

どのように解決するのですか?

期待されるオブジェクトが受信したオブジェクトのサブセットであるかどうかを確認するために 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() は、ある項目が配列の中にあるかどうかをチェックするためのものです。