2016-07-08 13 views
1

Ich stehe vor einem seltsamen Problem mit einer Test-Suite, die ich eingerichtet habe.Angular2 Unit Testing SpyOn mit Karma und Jasmin

Vorlage:

<a href="#" (click)="blop($event)"></a> 

HomeComponent:

export class HomeComponent { 
    public test: boolean; 

    public constructor() { 
    this.test = false; 
    } 

    public blop($event) { 
    this.test = true; 
    } 
} 

Der Test:

describe('Home Component : ',() => { 
    var builder; 
    var app; 

    beforeEach(inject([HomeComponent, TestComponentBuilder], (app, tcb) => { 
    builder = tcb; 
    app = app; 
    })); 

    it('should return test = true after click...', async(() => { 

    builder.createAsync(HomeComponent).then((fixture: ComponentFixture<HomeComponent>) => { 

     spyOn(fixture.componentInstance, 'blop'); 

     fixture.detectChanges(); 

     var compiled = fixture.debugElement.nativeElement; 
     compiled.querySelector('a').click(); 
     expect(fixture.componentInstance.test).toBe(true); 
     expect(fixture.componentInstance.blop).toHaveBeenCalled(); 
    }); 
    })); 
}); 

Ich erhalte eine Fehlerausgabe auf: Erwarteter falsch wahr zu sein.

ABER, wenn ich den Spion kommentiere und den letzten erwarte, funktioniert es.

Haben Sie eine Ahnung, was ich falsch mache?

Dank

M

+0

Könnten Sie geben mehr Details über Ihre 'HomeComponent' Komponente? Vielen Dank! –

Antwort

1

Sie einen Wert für den Spion zurückkehren sollte. SpyOn fängt erst an auszuspionieren.

SpyOn(fixture.componentInstance, 'blop').and.returnValue(true);

Verwandte Themen