2016-10-18 4 views
3

私はangular-cliテストフレームワークを使用しています。spyOnがstart()のためにスパイするオブジェクトを見つけることができませんでした

私のコンポーネントの中で、私は 'ng2-slim-loading-bar'ノードモジュールを使用しました。

beforeEach(() => { 
    let slimLoadingBarService=new SlimLoadingBarService(); 
    demoComponent = new DemoComponent(slimLoadingBarService); 
    TestBed.configureTestingModule({ 
     declarations: [ 
      DemoComponent 
     ], 
     providers: [ 
      { provide: SlimLoadingBarService, useClass: SlimLoadingBarService} 
     ], 
     imports: [ 
      SharedModule 
     ] 
    }); 
}); 
it('should pass data to servie',() => { 
    spyOn(slimLoadingBarService,'start').and.callThrough(); 
    //testing code,if I remove the above service from my component, test runs fine 
}); 

が、その動作していない:私はこのコンポーネントをテストしていたときに

submit(){ 
    this._slimLoadingBarService.start(() => { 
    }); 
    //method operations 
} 

は今、私はとspyOnにこのサービスを適用しています。

それはエラーの下にスロー:

letで slimLoadingBarServiceを宣言

spyOn could not find an object to spy upon for start()

答えて

3

を、あなたはbeforeEachコールバックスコープにその範囲を制約しています。 varで宣言するか、適切なdescribe()ブロックの後に宣言し、beforeEachコールバック関数内でその内容を設定します。

describe("some describe statement" , function(){ 
    let slimLoadingBarService = null; 

    beforeEach(() => { 
     slimLoadingBarService=new SlimLoadingBarService(); 

    }); 

    it('should pass data to service',() => { 
     spyOn(slimLoadingBarService,'start').and.callThrough(); 
     //testing code,if I remove the above service from my component, test runs fine 
    }); 
}); 
関連する問題