2

Obeservable function in example.component.ts

public name: string;

this._cm.getData().subscribe(
    response => {
       this.name = response.name;
    },
    error => {
        this.name = undefined;
    }

Mock service

public _cm = {
    data: {
        name: 'test'
    }

    getData(): Observable<any> {
        return Observable.of(this.data);
    }
}

Test observable function in example.component.spec.ts

// this test work corectly
it('Should set name property to "test"', () => {
    comp._cm.getData();
    expect(comp.name).toBe('test');  
}

it('Should set name property to undefined', () => {
    comp._cm.getData();
    expect(comp.name).toBe('undefined');  
}

but I do not know how to simulate error response getData()

Emerceen
  • 2,735
  • 3
  • 17
  • 22

1 Answers1

2

You should just create the Observable using Observable.create. With this, you can control when the error should be emitted. For example

public _cm = {
    error: false,
    data: {
        name: 'test'
    },
    getData(): Observable<any> {
        return Observable.create(observer => {
            if (this.error) {
                observer.error(new Error("Boo"));
            } else {
                observer.next(this.data);
            }
            observer.complete();
        })
    }
}

Now you can just control the error in your test

_cm.error = true;
// do test

See Also:

Community
  • 1
  • 1
Paul Samsotha
  • 205,037
  • 37
  • 486
  • 720
  • Method works, but I had to change: observer.onError to observer.error observer.onNext to observer.next observer.onComplete to observer.complete – Emerceen Nov 17 '16 at 12:57