Me gustaría probar que el tiempo se analiza correctamente y solo estoy interesado en verificar algunas de las propiedades y no todo el objeto. En este caso hora y minutos.
Intenté usar expect(object).toContain(value) pero, como puede ver en el fragmento a continuación, falla aunque el objeto contiene las propiedades que me interesan y tienen el valor correcto.
● 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)Para verificar si el objeto esperado es un subconjunto del objeto recibido, debe usar toMatchObject(object) :
expect(parseTime('12:54')).toMatchObject({ hours: 12, minutes: 54}) o expect.objectContaining(object) comparador:
expect(parseTime('12:54')).toEqual(expect.objectContaining({ hours: 12, minutes: 54}))funcionan de maneras ligeramente diferentes, consulte ¿Cuál es la diferencia entre '.toMatchObject' y 'objectContaining' para obtener más detalles?
toContain() está diseñado para verificar que un elemento esté en una matriz.
Si desea probar parte de un objeto dentro de una matriz de objetos , use objectContaining dentro de arrayContaining . Aquí hay un ejemplo:
test( 'an object in an array of objects', async () => { const bookData = [ { id: 1, book_id: 98764, book_title: 'My New International Book', country_iso_code: 'IN', release_date: '2022-05-24' }, { id: 2, book_id: 98764, book_title: 'My New International Book', country_iso_code: 'GB', release_date: '2022-05-31' }, { id: 3, book_id: 98764, book_title: 'My New International Book', country_iso_code: 'US', release_date: '2022-06-01' } ]; expect( bookData ).toEqual( expect.arrayContaining([ expect.objectContaining( { country_iso_code: 'US', release_date: '2022-06-01' } ) ]) ); } );Obtuve esto de este artículo de Medium .