2017-02-06 4 views
0

このようなフローについて正しい方法はありますか? BarServiceにはブール値を返す関数があります。この関数は、結果自体を計算するか、または観測可能な呼び出しの結果に依存する可能性があります(FooService)。関数内で観測可能な/サブスクリプションのフローを同期と正しく結合する方法

私は、テストの結果が真であることを期待していますが、それは未定義です。

foo.service.ts

doObservableThing(): Observable<boolean> { 
    return Observable.of(true); 
} 

bar.service.ts

doThing(): boolean { 
    if (someCondition) { // will be true for the test below 
    this.fooService.doObservableThing().subscribe(
    () => { return true; }, 
    () => { return false; }); 
    } else { 
    return false; 
    } 
} 

bar.service.spec.ts

it('should return true',() => { 
    let result = barService.doThing(); 
    expect(result).toBe(true); // result is undefined 
}); 

答えて

2

これを試してみてください:

doThing(): Observable<boolean> { 
    if (someCondition) { // will be true for the test below 
     return this.fooService.doObservableThing().map(() => true); 
    } else { 
     return Observable.of(false); 
    } 
} 
関連する問題