Polymer を ES6 クラスと結合するさらに別の試み。
そして、インポートされたes6クラス(systemjsによる)を持つポリマーコンポーネントでwctテストがランダムに失敗することを除いて、ほとんど機能します。私が理解している限り、これは mocha がテストを実行した後にクラス定義を含むスクリプトがロードされるために発生します。ポリマー コンポーネントは、html と javascript (後者を es5 にコンパイルするため) の 2 つの部分で構成されます。
html:
<dom-module id="my-test">
<template>hello</template>
<script>
System.import('elements/my-test.js');
</script>
</dom-module>
JavaScript:
import {User} from 'elements/model/user.js';
Polymer({
is: "my-test",
method: function(){
console.log("method, user="+this.val);
},
ready: function(){
this.user= new User(); //this.user is randomly undefined
}
});
これは、少なくとも localhost からロードされた場合、ブラウザーで非常に安定して動作するようです。しかし、テストを「修正」する唯一のことは、Polymer の ready 呼び出しを遅らせることです。
Polymer.whenReady = function (f) {
console.log("polymer ready");
setTimeout(f, 100);// "fix"
//f();
}
これは、ある時点でこれがすべてブラウザでも失敗することを意味します (おそらく、ローカルホスト以外からサービスを提供している場合)。
どうにかしてシステム レジスタの約束を達成し、HTMLImports.whenDocumentReady に似たものを作成することを考えていますが、これがどのように機能するかについてはまだ明確に理解していません。
ですから、どんなアイデアや提案も大歓迎です!
サンプル アプリは github にあります。
git clone https://github.com/bushuyev/test_test.git
cd test_test
git checkout tags/random_fail
npm install
bower install
gulp wct
失敗するよりも頻繁に成功させるには、wct.conf.js で verbose を true に変更します。