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

346
Views
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 answers
Answer question

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 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!