【发布时间】:2016-04-03 21:44:51
【问题描述】:
概述
在 dom-if、dom-repeat <templates> 中动态呈现的 DOM 元素似乎是异步呈现的,因此使单元测试有点痛苦。
聚合物成分
template(is='dom-if', if='{{!defaultPrintAll}}')
template(is='dom-repeat', items='{{_pageBucketItems}}')
button(type='button', class$='{{_computeDefaultClass(item)}}', on-tap='_togglePageClick') {{item}}
测试
test("Clicking 'Export All' to off, reveals board-selection tiles", function() {
$("#export-pdf-checkbox-all").siblings(".checkbox").trigger("click");
Polymer.dom.flush()
expect($(".board-range__button")).to.be.visible;
});
为什么它似乎失败了:
单击触发dom-if/dom-repeat 的按钮时,元素不会以同步顺序呈现。
dom-if和它的后续/嵌套dom-repeat异步渲染。更糟糕的是,
button本身以计算/绑定的方式获取它的类(请注意button上的class$=)。
所以问题归结为:
在我模拟点击后是否可以强制渲染dom-if、dom-repeat和类的计算绑定以同步顺序激活所有这三个条件的按钮?
注意事项:
- 我使用 Polymer 的官方 WCT 作为测试工具。
- 我也在使用 chai-jquery。
- 我也用过
Polymer.dom.flush(),但还是不行,咳咳……冲洗。 - 我知道我可以改用
chai-as-promised.js,但它会为我的测试增加不必要的复杂性,因为这样的小事,所以我想避免它。
【问题讨论】:
标签: polymer polymer-1.0 chai wct