2016-07-08 2 views
1

У меня возникла какая-то странная проблема с набором тестов, который я установил.Angular2 Unit Testing SpyOn с кармой и Jasmin

Шаблон:

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

HomeComponent:

export class HomeComponent { 
    public test: boolean; 

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

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

Тест:

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

я получаю выход ошибки на: Ожидаемая ложь, чтобы быть правдой.

НО, если я прокомментирую шпиона и последнее ожидание, оно работает.

У вас есть идеи, что я делаю неправильно?

Благодаря

M

+0

Не могли бы вы дать более подробную информацию о вашем 'HomeComponent' компонента? Благодаря! –

ответ

1

Вы должны возвращать значение для шпиона. SpyOn только начинает шпионить.

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

Смежные вопросы