1

动机

测试指令时;有时断言以不明显的方式失败,堆栈跟踪没有帮助,并且在使用 Chrome 开发人员工具在断点处暂停时检查局部变量会将森林隐藏在树后面。

这是我希望我能够暂停单元测试(可能使用iitor ddescribe)并在指令的 UI 周围查看以缩小错误行为的时候。

至今

我之前已经能够使用 KnockoutJS 实现这一点,并发现它在复杂场景中是一种非常有用的技术。现在我想对 AngularJS 做同样的事情。

  • 我发现我可以将$compile使用 Angular 的元素附加到 html 正文,这使它可见,但是我无法与之交互,就好像所有绑定都已关闭一样。
  • 经过仔细检查,我发现在运行测试用例(一个it块)时,一切似乎都井然有序,一旦测试用例完成,所有事件侦听器就会从相应的 DOM 元素中消失——click比如<button ng-click="...">.
  • 经过一番挖掘,我发现在angular-mocks.js:1965 的深处有一个afterEach块可以调用.off()在两个地方关闭 DOM 事件侦听器:
  • 当我注释掉这两.off()行时,瞧,附加的指令在 DOM 中变得栩栩如生!

注意:虽然我链接到 ( v1.2.10-build.2148+sha.fced1c0) 的 angular-mocks 版本不是最先进的,但较新的版本似乎只是在涉及到这部分时移动的行号有所不同。

问题

是否有更好的(更多支持、更少临时性和/或更少hackish)方法来实现我想要做的事情?如果是这样,怎么做?

编辑:版本

  • 业力 0.10.9
  • 茉莉花 1.3.1
  • Angular Mocks v1.2.10-build.2148+sha.fced1c0
  • AngularJS 1.2.10-build.2148+sha.fced1c0
4

0 回答 0