我有一些(MyCmp)组件(<my-cmp></my-cmp>)这样的模板
<template ngFor let-r [ngForOf]="range" let-index="index">
<span>{{ index < 5 ? 'Y' : 'N' }}, {{r.data}}</span>
<i (mouseenter)="somefunc()" (click)="elefunc()"></i>
....
</template>
Run Code Online (Sandbox Code Playgroud)
我通过特殊的 TestComponent 为 MyCmp 组件配置 TestBed
TestBed.configureTestingModule({declarations: [TestComponent], imports: [MyModule]}
TestBed.overrideComponent(TestComponent, {set: {template: '<my-cmp></my-cmp>'}});
fixture = TestBed.createComponent(TestComponent);
context = fixture.debugElement.componentInstance;
element = fixture.nativeElement;
fixture.detectChanges();
Run Code Online (Sandbox Code Playgroud)
我认为这并不重要。测试有效。
element.querySelectorAll('i')[0].click(); //fine
Run Code Online (Sandbox Code Playgroud)
但我不知道我应该如何发出悬停(mouseenter)和mouseleave事件
element.querySelectorAll('i')[0].hover() // not a function
element.querySelectorAll('i')[0].mouseover() // not a function
element.querySelectorAll('i')[0].createMouseEvent('mouseover') // not a function
Run Code Online (Sandbox Code Playgroud) 我有一个 docker 容器,它运行 node.js 应用程序。该应用程序运行一个 headless-chrome 实例。
一切正常,但如果我杀死 chrome-instance,并检查运行的进程列表,我将看到 2 个(实际上是 3 + 2 个 cat 进程)僵尸 chrome 进程(已失效)仍在系统中。我知道这个进程是一个子进程(被杀死的父chrome 进程的),它没有正确完成并附加到init进程。
我试图直接杀死它——被拒绝了。另外,我尝试使用detached:true标志生成 chrome,并再次直接杀死所有子进程,当主 chrome 收到“退出”信号时,无论如何向我ps -A | grep chrome显示两个已失效的进程。有任何想法吗?
UPD:
感谢大家的帮助。添加--init完全解决了我的问题。使用另一个基础图像也效果很好,但我认为这种方法没有必要。还可以在这里找到根本原因的详细描述