Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

564
Views
broma TypeError: indefinido no es iterable

Uso jest para ejecutar mi prueba de unidad, pero recibo un error.

 TypeError: Cannot read properties of undefined (reading 'getVideoTracks')

Cualquier sugerencia sobre cómo probar la siguiente línea en broma

 [videoTrack] = (await navigator.mediaDevices.getUserMedia({video: true})).getVideoTracks();

Mi archivo de prueba de unidad -

 import { Track } from './Track'; import { } from '../index'; const mockMediaDevices = { getUserMedia: jest.fn() }; Object.defineProperty(window.navigator, 'mediaDevices', { writable: true, value: mockMediaDevices, }); Object.defineProperty(navigator.mediaDevices.getUserMedia, 'getVideoTracks', { writable: true, value: jest.fn(), }); describe('Track', () => { describe('applyConstraints()', () => { let track: Track; let videoTrack: MediaStreamTrack; beforeEach(async () => { [videoTrack] = (await navigator.mediaDevices.getUserMedia({ video: true })).getVideoTracks(); track = new Track(videoTrack as MediaStreamTrack); }); it('should have applyConstraints method', () => { expect(typeof track.applyConstraints).toEqual('function'); }); }); });

Error detallado -

 TypeError: Cannot read properties of undefined (reading 'getVideoTracks') 67 | 68 | beforeEach(async () => { > 69 | [videoTrack] = (await navigator.mediaDevices.getUserMedia({video: true})).getVideoTracks(); | ^ 70 | track = new Track(videoTrack as MediaStreamTrack); 71 | }); 72 | at Object.<anonymous> (Media/Track/Track.test.ts:69:81)

He probado este código -

 const mockMediaDevices = { getUserMedia: jest.fn().mockReturnValue({ getVideoTracks: jest.fn() }) }; Object.defineProperty(navigator, 'mediaDevices', { writable: true, value: mockMediaDevices, });

Pero esto da un error -

 TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator)) 73 | 74 | beforeEach(async () => { > 75 | [videoTrack] = (await navigator.mediaDevices.getUserMedia({video: true})).getVideoTracks();
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

intenta cambiar este código:

 const mockMediaDevices = { getUserMedia: jest.fn() }; Object.defineProperty(window.navigator, 'mediaDevices', { writable: true, value: mockMediaDevices, }); Object.defineProperty(navigator.mediaDevices.getUserMedia, 'getVideoTracks', { writable: true, value: jest.fn(), });

a (EDITADO v2)

 const mockMediaDevices = { getUserMedia: () => Promise.resolve({ getVideoTracks: () => [jest.fn()], }), }; Object.defineProperty(window.navigator, 'mediaDevices', { writable: true, value: mockMediaDevices, }); beforeEach(async () => { const stream = await navigator.mediaDevices.getUserMedia({ video: true }); [videoTrack] = stream.getVideoTracks(); track = new Track(videoTrack as MediaStreamTrack); });

porque cuando destruye el resultado getVideoTracks() , elige el elemento en el índice 0. Pero jest.fn() no es una matriz que se pueda destruir como [videoTrack] = (await ....

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!