2017-12-13 17 views
0

私はHTMLElementを拡張するクラスを持っています。このスレッドカスタム要素の単体テストをテストするには

https://github.com/Microsoft/TypeScript/issues/574#issuecomment-231683089

を読んでから、私はIllegal constructorを取得アウトとカスタム要素をインスタンス化できないことを参照してください。さらに、registerElementは、カスタム要素のコンストラクタを返すにつれて有望に見えましたが、CustomElementRegistry.define()を使用しているため廃止されました。ウィンドウオブジェクトに1.があり、2. voidが返されます。どんな解決方法も大歓迎ありがとうございます。

この特定の設定私はカスタム要素のみが必要なため、Webコンポーネントフレームワークではなくネイティブカスタム要素を使用しようとしています。また、私はTypeScriptを使ってJestを使ってテストしようとしています。

+2

KarmaやWeb Component Testerなどのブラウザをテスト用に使用する必要があります。その後、コンポーネントをブラウザでインスタンス化してテストすることができます。 – Intervalia

答えて

1

あなたの要素が実際に何をしているのかに応じて、設計原則「懸念の分離」と「制御の反転」を考慮に入れることができます。

異なるものが異なるクラスに実装されている場合、分離の懸念があります。これは、分離されたものが具体的なHtmlElementをインスタンス化せずにテストできることを意味します。

分離されたクラス(おそらくHtmlElement)の依存関係がクラスの外部から設定可能な場合、テスト用のスタブにスタブを与えることでHtmlElementを簡単にスタブまたはモックすることができるので、インスタンス。

アイデアは、単体テストでアクセスできないか制御できないものとは独立した方法でコードを設計することです。

関連する問題