所以,我的 Angular 组件看起来像这样
<div class="hello" (keydown.enter)="doSomething()"></div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写案例测试 - 当用户专注于 div 时,按 Enter 应该调用 doSomething()。不幸的是,我无法用旁观者来嘲笑这种情况。我已经尝试过:
spectator.focus(spectator.query('.hello'));
expect(spectator.query('.hello')).toBeFocused(); // test failed
spectator.keyboard.pressEnter();
Run Code Online (Sandbox Code Playgroud)
还
spectator.query('.hello').dispatchEvent(new Event('focus'));
Run Code Online (Sandbox Code Playgroud)
并且两者都还与
spectator.detectChanges(); // without success
Run Code Online (Sandbox Code Playgroud)
我想,这个问题出在我的 HTML 模板中,但这些函数也不适用于:
<div class="hello" tabindex="0">
Run Code Online (Sandbox Code Playgroud)
甚至与
<input class="hello" type="text">
Run Code Online (Sandbox Code Playgroud)
请给予一些支持,如何关注 div 元素,然后按 Enter 键。