12.5.2021 |

Marble Tests For RxJS Observables

- Strich simuliert den Ablauf der Zeit, ein Strich entspricht einem Frame (10ms) emitiert keinen Wert

a - b Zeichen

| erfolgreicher Abschluss eines Observables

# Zeigt einen Fehler im Observable

^ einen Subscription-Punkt angeben

! gibt den Endpunkt der Subscription an

() mehrere Werte zusammen in der gleichen Zeiteinheit


cold: Beginnt nie zu subscriben, bevor sich jemand subscribed hat. (z.B. Aufgezeichnete Fernsehsendung)
hot: Sendet Ereignisse egal ob Subscriber vorhanden sind oder nicht. (z.B. Live Streaming)

cold(--a--b--|, { a: ‘Hello’, b: ‘World’ })

Sende "Hello" bei 30ms und "World" bei 60ms, complete bei 90ms.

hot(--^--a--b--|, { a: ‘Hello’, b: ‘World’ })

Subscription beginnt am Punkt des Carets, dann 'Hello' bei 30ms und 'World' bei 60ms ausgeben, komplett bei 90ms.

import { marbles } from 'rxjs-marbles/jest';

describe('Test RxJs', () => {
 it(
   'should make a basic test',
    marbles((m: Context) => {
      const source = m.cold('-x--y', { x: 10, y: 20 });
      const destination = source.pipe(map((number) => number * 2));

      m.expect(destination).toBeObservable('-a--b', { a: 20, b: 40 });
    })
  );
});
m.expect(destination).toBeObservable('-a--b', { a: 20, b: 40 });
Alternative:
m.expect(destination).toBeObservable('10ms a--b', { a: 20, b: 40 });
Rahmi Tufanoglu
Zur Übersicht

Mehr vom DevSquad...

Jan Sauer

Share your iPhone or iPad Screen with every Meeting Tool

Adrian Görisch

JS Regex named groups