我只是想让它工作
let fixture: any = TestBed.createComponent(ComponentBeingTested);
fixture.detectChanges();
const contextMenuEl: DebugElement[] = fixture.debugElement.queryAll(By.css("td");
contextMenuEl[0].nativeElement.oncontextmenu();
const doubleClickEl: DebugElement[] = fixture.debugElement.queryAll(By.css("li");
doubleClickEl[0].nativeElement.ondblclick();
当这是组件的模板时:
<td (contextmenu)="contextMenuFunction">Context Menu</td>
<li (dblclick)="dblClickFunction">Double click</li>
我收到错误 contextMenuEl[0].nativeElement.oncontextmenu is not a function and doubleClickEl[0].nativeElement.ondblclick is not a function
应用程序功能按预期运行。是的,如果我将这些事件更改为在模板中单击并在测试中单击,它在测试中都有效。
最佳答案
这是触发上下文菜单更改的方法:
contextMenuEl[0].triggerEventHandler("contextmenu", new MouseEvent("contextmenu"));
fixture.detectChanges();
这是触发双击更改的方法:
doubleClickEl[0].triggerEventHandler("dblclick", new MouseEvent("dblclick"));
fixture.detectChanges();
关于unit-testing - Angular 2 单元测试 : How do I test for the context menu and double click events?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40537867/