2016-10-18 4 views
3

Ich benutze angular-cli-Test-Framework.spyOn konnte kein Objekt zum Ausspionieren für den Start finden()

In meiner Komponente habe ich 'Ng2-Slim-Loading-bar' Knotenmodul verwendet. Jetzt

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

, wenn ich diese Komponente mich entschieden habe ich spyOn diesen Service als angewandt:

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 
}); 

aber seine nicht funktioniert.

Es wirft unter Fehler:

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

Antwort

3

slimLoadingBarService let Deklarieren Sie sind in ihrem Umfang auf den Umfang beforeRückruf einzuschränken. Deklarieren Sie es mit var, oder besser, deklarieren Sie es nach dem ordnungsgemäßen describe() -Block und setzen Sie seinen Inhalt innerhalb vor jeder Rückruffunktion:

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 
    }); 
}); 
Verwandte Themen