Skip to content

Instantly share code, notes, and snippets.

@NyaGarcia
Last active April 5, 2020 19:48
Show Gist options
  • Save NyaGarcia/d68ebe7b6f2d0ea0e3adfc4c7a542ce0 to your computer and use it in GitHub Desktop.
Save NyaGarcia/d68ebe7b6f2d0ea0e3adfc4c7a542ce0 to your computer and use it in GitHub Desktop.
Marble testing with TestScheduler
import { TestScheduler } from "rxjs/testing";
import { Observable } from "rxjs";
import { filter } from "rxjs/operators";
describe("Awesome testing with Marble Diagrams", () => {
const scheduler = new TestScheduler((actual, expected) => {
expect(actual).toEqual(expected);
});
const isMultipleOfTen = (number: number) => number % 10 === 0;
it("should filter numbers that aren't multiples of ten", () => {
scheduler.run(({ cold, expectObservable }) => {
const values = {
a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10
};
const number$ = cold("-a-b-c-d-e-f-g-h-i-j|", values);
const expectedMarbleDiagram = "-------------------a|";
const expectedValues = { a: 10 };
const result = number$.pipe(filter(number => isMultipleOfTen(number)));
expectObservable(result).toBe(expectedMarbleDiagram, expectedValues);
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment