【发布时间】:2018-03-07 15:05:46
【问题描述】:
我一直在尝试对单击调用函数的提交按钮的 Angular 2 应用程序进行测试。我通常使用两种方法来执行相同的操作。
element.nativeElement.click()
和
element.triggerEventHandler('click',null);
我认为这两种方法都是相同的,直到我遇到触发事件处理程序方法不起作用的情况。
element = fixture.debugElement.query(By.css('.dropList li'));
element.triggerEventHandler('click',null); //Click event works here
fixture.detectChanges();
let button = fixture.debugElement.query(By.css('button'));
//button.triggerEventHandler('click',null); //Does not call function
button.nativeElement.click(); //Calls function
fixture.detectChanges();
供您参考的模板:
<form (ngSubmit)="printSelection()">
<div class="dropList">
<ul>
<li *ngFor="let element of data.elements" (click)="selectElement(element)"> </li>
</ul>
</div>
<button type="submit">Submit</button>
</form>
那么,这两种方法之间有什么区别,还是您认为我的代码中的某个地方可能出错了?
【问题讨论】:
-
可以添加组件的模板吗?
-
@yurzui 添加了模板...
-
谢谢。您的模板中的
button在哪里?
标签: angular unit-testing typescript karma-jasmine