首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度测试点击事件

角度测试点击事件
EN

Stack Overflow用户
提问于 2017-08-07 09:56:25
回答 1查看 20.4K关注 0票数 9

目前,我正在尝试学习更多关于角测试(v2+)的知识,但我仍然停留在测试*ngFor循环中的单击事件。

这是HTML代码:

代码语言:javascript
复制
<div *ngIf="selectedHero">...</div>
<ul class="heroes">
  <li *ngFor="let hero of heroes" (click)="onSelect(hero)" [class.selected]="hero === selectedHero">
    <span class="badge">{{hero.id}}</span> {{hero.name}}
  </li>
</ul>

这是onSelect事件:

代码语言:javascript
复制
onSelect(hero:Hero):void{
    this.selectedHero = hero;
}

我有两个问题:

  1. 如何编写检查单击事件是否有效的测试?
  2. 在设置变量selectedHero时,如何编写使div元素可见的测试?

提前感谢!

更新我编写了以下测试来检查单击事件:

代码语言:javascript
复制
it('should trigger a click event', () => {
  fixture.detectChanges();
  fixture.whenStable().then(() => {
    let comp = fixture.componentInstance;
    spyOn(comp, 'onSelect');

    let el = fixture.debugElement.query(By.css('li')).nativeElement.click();
    expect(comp.onSelect).toHaveBeenCalled();
  });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 10:04:17

首先,按照本指南进行角度测试,了解compfixtureel变量是什么。

如何编写检查单击事件是否有效的测试?

您需要监视onSelect方法并确保它被触发:

代码语言:javascript
复制
it('should test click', () => {
    spyOn(comp, 'onSelect');
    el = fixture.debugElement.query(By.css('li')).nativeElement.click();
    expect(comp.onSelect).toHaveBeenCalled();
});

在设置变量selectedHero时,如何编写使div元素可见的测试?

您需要测试类是否应用于元素:

代码语言:javascript
复制
it('should test selected', () => {
    el = fixture.debugElement.query(By.css('li')).nativeElement;
    expect(el.classList.has('selected')).toBe(false);

    comp.onSelect(heroes[0]);
    expect(el.classList.has('selected')).toBe(true);
});
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45544167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档