我为聚合物元素设置了测试框架,并为Mocha提供了以下便利功能,element
是要在<iframe>
中测试的聚合物元素:
this.ctx.set = function(callback) {
callback.call(this, this.element);
Platform.flush();
return this;
};
this.ctx.then = function(callback) {
setTimeout(function() {
callback.call(this, this.element);
this.test.callback();
}.bind(this), 100);
return this;
};
然后使用它们:
(function() {
'user strict';
elementSuite('vca-colour-picker', function() {
test('setting the web value should be reflected in the RGB values', function(done) {
this.set(function(element) {
element.web = '#FFCC88';
}).then(function(element) {
assert.equal(element.r, 255);
assert.equal(element.g, 204);
assert.equal(element.b, 136);
});
});
});
}());
setTimeout
取决于指定的毫秒数偶尔会失败。我使用Unit Testing Polymer Elements指南来确定Platform.flush
和setTimeout
,但测试似乎不可靠。
是否有一种可靠的方法可以确保在传播Polymer属性更改后运行then
函数?