Angular2并测试EventEmitter

时间:2016-11-20 00:55:51

标签: testing angular jasmine

我有一个plunkr,并且在尝试按照网络上的一些建议而没有成功之后,一直试图弄清楚如何测试EventEmitter。我想知道如何通过触发按钮来测试它...更多的组件测试。代码位于 voter.component.ts voter.componet.spec.ts 文件中。对此的任何帮助将不胜感激。

it('should emit on up/down vote click', fakeAsync((): void => {
    let fixture: ComponentFixture = TestBed.createComponent(VoterComponent);
    let instance: VoterComponent = fixture.componentInstance;

    spyOn(instance.onVote, 'emit');
    let button = findElement(fixture, 'button:first-child');
    button.click();

    fixture.detectChanges();
    tick();

    expect(instance.onVote.emit).toHaveBeenCalled(1);
}));

1 个答案:

答案 0 :(得分:1)

第一个观察是@Input和@Output装饰总是需要后跟一对括号,更多关于主题的详细信息here

代码中的第二个问题是你在onVote()事件处理程序方法中增加了counter而不是this.counter

另外,作为旁注,VoterComponent不需要在父(App)组件的指令数组中声明。

Working plunkr