业力测试案例:焦点事件

Emp*_*pty 6 focus angularjs karma-runner

我正在使用业力测试案例测试angularjs中的焦点事件.但要素没有得到集中.在我执行element.focus()并检查元素是否被聚焦之后,我得到了错误.而此时的document.activeElement就是整个身体.

请提出解决方案.谢谢

Dar*_*ryn 8

(这个答案受到测试的启发,专注于AngularJS指令)

您需要将元素添加到文档正文中,以便document.activeElement可以使用它.

在你打电话之前element.focus(),这样做:

element.appendTo(document.body);
Run Code Online (Sandbox Code Playgroud)

此外,如果您在单元测试中执行此操作,我建议您在测试后删除元素,否则每个测试都会向主体添加另一个元素(这可能会影响您的其他测试结果).

afterEach(function () {
    element.remove();
}
Run Code Online (Sandbox Code Playgroud)

  • 这对我很有用(大多数情况下).我没有使用JQuery,所以`element.appendTo`没有删除它.我需要做`document.body.appendChild(element [0]);` (3认同)