聚合物单元测试不可靠的Platform.flush

时间:2014-06-24 14:57:31

标签: javascript unit-testing polymer

我为聚合物元素设置了测试框架,并为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.flushsetTimeout,但测试似乎不可靠。

是否有一种可靠的方法可以确保在传播Polymer属性更改后运行then函数?

0 个答案:

没有答案