angular - 使用 Angular 和 Jasmine 监听输入按键的测试指令
问题描述
我有一个指令,它监听 keydown 事件以便在按下 enter 时采取行动,以及一个使用它的组件:
onEnter 指令
@Directive({
selector: '[appOnEnter]'
})
export class OnEnterDirective {
@Output() enterPressed = new EventEmitter();
@HostListener('document:keydown', ['$event'])
onKeyPress(event: KeyboardEvent) {
if ((event.which === 13)) {
this.enterPressed.emit();
}
}
}
组件.html
<div appOnEnter (enterPressed)=do()></div>
组件.ts
export class Component {
next = new EventEmitter<null>();
do() {
this.next.emit();
}
}
我正在尝试用 Jasmine 对此进行测试,但似乎没有触发该事件。
组件.spec.ts
it('if enter is pressed action should be taken', () => {
spyOn(component.next, 'emit');
const event = new KeyboardEvent('keypress', {
key: 'Enter'
});
fixture.detectChanges();
expect(component.next.emit).toHaveBeenCalled();
});
组件和指令工作正常,唯一的问题是模拟输入压力。
解决方案
推荐阅读
- php - 如何在 WooCommerce 中为正常价格和促销价格添加后缀?
- talend - 如何从 Talend 中的 txt 文件中提取模式
- streamreader - 如果数据以 '\r' 结尾,StreamReader.ReadLineAsync() 将无限期等待
- java - Java - Hibernate 环境在 Jar 中不起作用
- entity-framework-core - MVC,.NET 5.0 - 如何根据数据库值过滤索引/创建页面?
- php - PHP/Laravel 基于日期的 ID - 如何使其防水?
- python - 在 Tensorflow 中连接空数组
- angular - 无法将动态 *ngSwitchCase 值与 [class.active] 绑定
- sql - SQL,MongoDB架构问题,如何处理复杂的页面
- python - 定义一个没有目录的包