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

397
Vistas
Pruebas unitarias de rxjs en Angular

Tengo problemas para escribir pruebas unitarias para observable en Angular... Estoy tratando de probar casos si displayPaymentsLineItem$ será verdadero o falso dependiendo de los valores de mobileAccountBalance$, y selectedMobileDigitalBill$... ¿Alguien puede ayudar?

 public selectedMobileDigitalBill$: Observable<MobileDigitalBill>; public mobileAccountBalance$: Observable<MobileAccountBalance>; private expandedLinesMap: object = {}; private expandedTaxesAndFees: boolean = false; private devices: MobileDevice[] = []; private destroy$: Subject<void> = new Subject(); constructor(] private mobileStatementsTabFacade: MobileStatementsTabFacade, private billingMobileFacade: BillingMobileFacade, ) {} ngOnInit() { this.mobileAccountBalance$ = this.mobileStatementsTabFacade.mobileAccountBalance$; this.displayPaymentsLineItem$ = combineLatest([ this.mobileAccountBalance$, this.selectedMobileDigitalBill$, ]).pipe( map(([mobileAccountBalance, selectedMobileDigitalBill]: [MobileAccountBalance, MobileDigitalBill]) => { const isPastDue: boolean = mobileAccountBalance?.pastdue > 0; const hasPayments: boolean = selectedMobileDigitalBill?.payments?.length > 0; return isPastDue && hasPayments; }) ); } });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede take(1) (tomar un valor, luego completar) y suscribirse para probar si el valor emitido es falso. Los observables deben completarse si los prueba de esta manera.

 describe('The display payment line items observable', () => { it('should emit truthy', () => { displayPaymentsLineItem$ .pipe(take(1)) .subscribe(value =>{ expect(value).toBeTruthy(); }); } }

Dicho esto, displayPaymentsLineItem$ no emitirá nada si los dos observables dentro combineLatest() no están definidos en su prueba. Dado que provienen de dos fachadas, es posible que deba proporcionarlos antes de comenzar su prueba.

Además, sobre su ejemplo de código:

  1. displayPaymentsLineItem$ no se declara antes que el constructor.
  2. se declara selectedMobileDigitalBill$ pero nunca se define antes de que se haga referencia dentro combineLatest() .
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