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

353
Vistas
TypeError: Object.method no es una función cuando se usa broma

Estoy tratando de armar una implementación básica de una clase observable en un archivo js

 export class Observable { constructor(emitter){ return this._emitter = emitter } foo(){ return'bar' } subscribe(next, error = {}, complete = {}){ if (typeof next === "function") { return this._emitter({ next, error: error, complete: complete }) } else { return this._emitter(next) } } }

con un archivo de broma correspondiente

 import { Observable } from "./observable"; describe("Observable", () => { test('foo', () => { let fakeAsyncData$ = new Observable(); expect(fakeAsyncData$.foo()).toBe('bar') }) test('Observable subscriptions next returns value in pipe', () => { let test_value = "testing" let fakeAsyncData$ = new Observable(observer => { observer.next(test_value); }); fakeAsyncData$.subscribe({ next(val) { expect(val).toBe(test_value) } }); }); });

Por alguna razón, la segunda prueba falla debido a que la suscripción no es una función. Lo cual parece ser incorrecto. Aquí está toda la salida de broma

 FAIL ./observable.test.js Observable ✓ foo (21 ms) ✕ Observable subscriptions next returns value in pipe (2 ms) ● Observable › Observable subscriptions next returns value in pipe TypeError: fakeAsyncData$.subscribe is not a function 14 | }); 15 | > 16 | fakeAsyncData$.subscribe({ | ^ 17 | next(val) { expect(val).toBe(test_value) } 18 | }); 19 | }); at Object.subscribe (observable.test.js:16:24) Test Suites: 1 failed, 1 total Tests: 1 failed, 1 passed, 2 total Snapshots: 0 total Time: 0.592 s, estimated 1 s Ran all test suites. npm ERR! Test failed. See above for more details.

¿Qué he logrado arruinar aquí?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Elimina la palabra clave return del constructor. Está devolviendo el resultado de la asignación this._emitter = emitter , que es una función, como le indicará llamar a console.log(typeof fakeAsyncData$) .

Los objetos instanciados a través de un constructor no necesitan devolver explícitamente esa instancia. Hacerlo con cualquier valor no primitivo devolverá ese valor en su lugar. Los valores de retorno primitivos se ignoran; consulte MDN .

about 4 years ago · Juan Pablo Isaza Denunciar
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