web-dev-qa-db-fra.com

Comment puis-je tester une partie d'un objet à l'aide de Jest?

Je voudrais tester que le temps est correctement analysé et je ne suis intéressé que par la vérification de certaines propriétés et non de l'objet entier. Dans ce cas, heure et minutes.

J'ai essayé d'utiliser expect(object).toContain(value) mais comme vous pouvez le voir dans l'extrait ci-dessous, il échoue bien que l'objet contienne les propriétés qui m'intéressent et qu'elles aient la valeur correcte.

● 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

Pour vérifier si l'objet attendu est un sous-ensemble de l'objet reçu, vous devez utiliser la méthode toMatchObject(object):

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

ou expect.objectContaining(object) matcher:

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

ils fonctionnent de manières légèrement différentes, veuillez jeter un œil à Quelle est la différence entre '.toMatchObject' et 'objectContaining' pour plus de détails.

toContain() est conçu pour vérifier qu'un élément est dans un tableau.

27
thorin87