2017-03-24 10 views
1

私はサービスを呼び出すコンポーネントをテストしています。ブール値を返すようにサービスをスタブまたはモックしたいのですが、subscribe関数のコールバック/成功関数にあるコンポーネント変数は、この模擬ブール値に設定されています。だから私のコンポーネントでは、私のコンポーネントからwelcomeServiceのgetBusinessDetailsメソッドを呼び出します。これが問題の原因です。 isReturning値を偽装して、対応するコンポーネント変数を設定する必要があります。それは、真実であると期待される期待値を返します。Observableの角度2のジャスミンテスト

public getBusinessDetails(): void { 
     this.welcomeService.getBusiness(this.businessId, 2017) 
      .subscribe((isReturning) => { 
       this.isReturningApplicant = isReturning; 
       this.welcomeMessage = this.isReturningApplicant ? 'Welcome Back' : 'Welcome'; 
      }); 
    } 


TestBed.configureTestingModule({ 
      declarations: [WelcomeComponent], 
      imports: [ReactiveFormsModule], 
      providers: [{ provide: SessionService, useValue: sessionServiceStub }, 
      { provide: WelcomeService, useValue: welcomeServiceStub }] 
     }); 

describe('Gets details',() => { 
     beforeEach(() => { 
      sessionServiceStub = { 
       getSession: function() { return { businessId: 11111, agentId: 11111 } } 
      } 
      welcomeServiceStub = { 
       getBusiness: function() { return { subscribe:() => Observable.of(true) } } 
      }; 
     }) 

     it('get a returning customer',() => { 
      component.ngOnInit(); 
      expect(component.isReturningApplicant).toBe(true); 

     }); 

    }) 

答えて

1

ちょうどそれがsubscribe

getBusiness: function() { return Observable.of(true) } 

せずに観察を返すようObservableが返さはsubscribe方法

getBusiness().subscribe() 

getBusinessObservableを返し、その後、あなたがObservable.subscribeへの呼び出しを変更しています

+0

スーパー、あなたの命の恩人と天才! – Simon

+0

スイートを使って値を変更している、つまり変数をfalseに設定していると、これによって問題が起こるでしょうか?@peeskillet – Simon

+0

どういう意味ですか? –

関連する問題