使用聚合物手势来测试自定义元素

时间:2015-03-19 10:02:53

标签: unit-testing polymer

为什么this test导致以下失败和错误?

expected 'NO. ONE' to equal 'ITEM TWO'
               <unknown> at /swiper-slider/test/basic-test.html:59
      Object.Fake.downAt at /polymer-gestures/test/js/fake.js:98
  Object.Fake.downOnNode at /polymer-gestures/test/js/fake.js:89
     Context.<anonymous> at /swiper-slider/test/basic-test.html:56

polymer-gestures/test/js/fake.js未能找到this method中的目标,来自this method,但我无法缩小确切的罪魁祸首。

我的预感是它与div.swiper-button-next元素appended as a child on the fly以及the test中使用document.querySelector('swiper-slider /deep/ div.swiper-button-next')有关。

1 个答案:

答案 0 :(得分:1)

我预感到有一些事情正在发生。

  1. 在您拨打电话时,div.swiper-button-next不在DOM中。当一切都完成时(或者检查这个回调中的值),或者(只是为了测试这是否实际上是问题)将一个回调引入你的系统,然后设置一个手动setTimeout来延迟查询选择器和断言。

  2. Polymer的targetAt函数在内部使用elementFromPoint()。仔细检查一下,确保你没有任何叠加层(核心叠加层往往会在我的窗户上扯掉...),而你真正想要点击的元素实际上是找到的元素。不要害怕将一些debugging / console.log语句放入实际的聚合物源代码中,看看它在那里发现了什么。

  3. 我没有花太多时间查看测试,但是自从你查询它之后,你的slideEls [1]可能已经改变了。 querySelectorAll会返回“非实时”节点列表,因此对DOM的更改不会更新您的选择。