Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

132
Vistas
cómo arreglar los oyentes llamados más de una vez

Cómo verificar si el oyente ya está presente, eventCallbackSpyTrack se llama 2 veces al parecer. ¿Cuándo alguien se suscribe a la misma pista más de una vez? Supongo que todos los oyentes de la pista llamaron más de una vez, ¿Cómo arreglar esto?

 // expect(eventCallbackSpyTrack.calledOnce).to.eq(true);

eventCallbackSpyTrack se llama 2 veces, eventCallbackSpyTrack.callCount es 2 pero debería ser 1

Cómo arreglar esto ? Intenté eliminar removeEventListener pero esto no funciona. Por favor ayuda.

 async subscribe(eventName: string, listener: () => void): Promise<subscription> { const subscriptionListener = { id: uuidv4(), method: listener, }; subscriptions.events[eventName].set(subscriptionListener.id, { module: 'track', method: subscriptionListener.method, }); const thisEventListeners = subscriptions.events[eventName]; switch (eventName) { case 'track:mute': { if (thisEventListeners.size >= 1) { this.#mediaStreamTrack.addEventListener('mute', (event) => { trackMutePublisher(event, this, 'track'); }); } break; } default: break; } return new Promise((resolve) => { resolve({ type: eventName, listener: subscriptionListener, }); }); }

En mi prueba unitaria dice

 // expect(eventCallbackSpyTrack.calledOnce).to.eq(true);

eventCallbackSpyTrack se llama 2 veces, eventCallbackSpyTrack.callCount es 2 pero debería ser 1

prueba de unidad -

 describe.only('track mute event & publisher', () => { before(async () => { [videoTrack] = (await navigator.mediaDevices.getUserMedia({video: true})).getVideoTracks(); track = new Track(videoTrack as MediaStreamTrack); setupMediaTrackMocks(); subscription = await track.subscribe('track:mute', eventCallbackSpyTrack); subscription2 = await track.subscribe('track:mute', eventCallbackSpyTrack2); }); after(() => { resetMediaTrackMocks(); }); it('should have called the callback once', () => { expect(subscription.listener.method).to.be.equal(eventCallbackSpyTrack); expect(subscriptions.events['track:mute'].get(subscription.listener.id)?.method).to.be.equal(eventCallbackSpyTrack); expect(subscription2.listener.method).to.be.equal(eventCallbackSpyTrack2); expect(subscriptions.events['track:mute'].get(subscription2.listener.id)?.method).to.be.equal(eventCallbackSpyTrack2); track.getMediaStreamTrack().dispatchEvent(new Event('mute')); Sinon.assert.called(eventCallbackSpyTrack); // expect(eventCallbackSpyTrack.calledOnce).to.eq(true); expect(eventCallbackSpyTrack.callCount).to.be.equal(1); });

Intenté eliminar removeEventListener pero esto no funciona. Por favor ayuda.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda