-
Notifications
You must be signed in to change notification settings - Fork 413
/
Copy pathcatch-spec.ts
39 lines (33 loc) · 1.37 KB
/
catch-spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
declare var describe, it, expect, hot, cold, expectObservable, expectSubscriptions, rxTestScheduler, beforeEach;
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
describe('The catch operator examples', () => {
describe('Example 1 - Catching error from observable', () => {
it('catch an error', () => {
const source = cold('#')
const example = source.catch(_ => Observable.of('Error Caught!'));
const expected = '(a|)';
expectObservable(example).toBe(expected, {a: 'Error Caught!'});
});
});
describe('Example 2 - Catching rejected promise', () => {
it('catch an error from a rejected promise', (done) => {
let result;
const badPromise = val => new Promise((resolve, reject) => reject('Rejected!'))
const source = Observable.of(true);
const example = source
.mergeMap(val => badPromise(val))
.catch(err => Observable.of(err));
const expected = 'Rejected!';
example.subscribe({
next: val => result = val,
complete: () => {
expect(result).toBe('Rejected!');
done();
}
});
});
});
});