webcomponents.js
ポリフィルを使用するWebコンポーネントを単体テストしたい。ポリフェイルされたWebコンポーネントをテストする方法カスタム要素
私のコンポーネントはes6 + scssで作成され、ビルドタスクではes6をes5に変換し、scssをCSSに処理し、両方の結果ファイルをhtmlファイルに挿入して、自分のアプリケーションをHTML Import
機能性。私はbabel
とKarma
サーバー、transpile UTを起動し、Jasmine
でUTを実行することができ、テスト作業を行った。このとき
class my-component extends HTMLElement {
createdCallback() {...}
... //other component methods
//getter/setter
get colors() {
return this._color;
}
set colors(val) {
this._color = val;
}
}
:ここ は、カスタム要素宣言のためのコンポーネントクラスの一例です。このUTは、Chromeで渡します
describe...
beforeEach(function() {
this.component = document.createElement(COMP_NAME);
}
it("should return an array", function() {
expect(this.component.colors).toEqual(jasmine.any(Array));
});
});
:...
例を
すべての私のテストは、Chromeで渡しているが、IE11では、ゲッター/セッターまたはメソッドにアクセスするすべてのテストが失敗していますしかし、IEでそれは失敗するでしょうExpected undefined to equal <jasmine.any(Array)>
私の診断は、コンポーネントを作成するのに時間がかかることです。それは完全に作成されています前に、私のテストでは、私はコンポーネントのゲッターにアクセスします(私は未定義の取得、なぜこれが...) 私は
setTimeout(() => {
expect(this.component.colors).to...
});
でテストを延期しようとしたが、この作品、時には、時にははありません。 ..
私はこれをどのように修正できるか教えていただけますか? 補足として、これはすべてのコンポーネントで発生するわけではありません。実行する多くのメソッド/アクセサといくつかのロジックを持つものだけであるようだ...
解決方法を見つけたことがありますか、これを行う方法の例がありますか?私は同じ状況で苦労しています... – Dave
いいえ、解決策はありません... – ylerjen