2016-07-08 1 views
1

Je suis confronté à un problème étrange avec une suite de tests que j'ai mis en place.Angular2 Test d'unité SpyOn avec Karma et Jasmin

Modèle:

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

HomeComponent:

export class HomeComponent { 
    public test: boolean; 

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

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

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

Je reçois une sortie d'erreur: attendu faux pour être vrai. MAIS, si je commente l'espion et le dernier attend, ça marche.

Avez-vous une idée de ce que je fais mal?

Merci

M

+0

Pourriez-vous donner plus de détails au sujet de votre composant 'de HomeComponent'? Merci! –

Répondre

1

Vous devez retourner une valeur pour l'espion. SpyOn commence seulement à espionner.

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