首页 > 解决方案 > 如何使用 Jasmine 测试嵌套的 ng-click

问题描述

我有一个类似这样的 HTML:

<li ng-show="obj.displayTab" role="tab">
    <a tabindex="0"  ng-click="abc($event)">
      NAME
    <div id="stdCloseButton"  tabindex="0" role="button"  ng-click="xyz()">
       PIC
   </div>
   </a>

在 Jasmine 测试中,我想绑定xyz(),但即使我到达嵌套div并触发点击事件,它仍然会触发abc()

 var closeDiv = testElement.find( '#stdCloseButton' ).first();
 angular.element( closeDiv).click();

不知道该去哪里。帮助表示赞赏。

标签: javascriptangularjsunit-testingjasminekarma-jasmine

解决方案


您的 HTML 无效。按照设计,内联元素(如 an anchor)不能包含块元素(如 a div),反之亦然。您无法对此进行测试这一事实表明这里可能存在其他问题。请考虑改用以下有效的 HTML。

<li ng-show="obj.displayTab" role="tab">
    <a tabindex="0"  ng-click="abc($event)">
        NAME
    </a>
    <div id="stdCloseButton"  tabindex="1" role="button"  ng-click="xyz()">
       PIC
   </div>
</li>

推荐阅读