いくつかの簡単な検索で、私は明らかに ではない一人称 考えていることがわかりました「CSSを単体テストできますか?」 。
ここで誰かがCSSユニットテストに成功したのだろうか?あなたが試みて失敗した場合、または単にあなた自身の理論を持っている場合、なぜそれが(明らかに)まだ行われていないのか教えてください。
WebテストフレームワークであるSeleniumを使用できます。このようにして、DOMなどの要素にどのスタイルを適用するかを表明できます。
そうでなければ、あなたの目的が何であるかわからない。ユニットテストは、その名前が示すように、「ユニット」をテストすることであり、私にとって、これはcssではなくコードでのみ意味があります。
Quixote と呼ばれる新しいcssユニットテストライブラリがあります。画像を視覚的に比較するのではなく、コードを調べます。 Seleniumとは異なり、特定のスタイルを表明する必要はありません。代わりに、「中央に配置する必要があります」または「左側をこの他の要素の右側に10px離す必要があります」などと言うことができます。
CSSをユニットテストできなかった、またはユニットテストすべきではない理由がわかりません。これが私が考えているシナリオです:
複数のモジュラーCSSファイルで構成されたCSSフレームワークがあり、5つのサイトを駆動しています。
Ex : base.css / form.css / article.css etc.
サイト#1のみに適用される要件のためにbase.cssに変更を加えたと想像してください=>サイト#2のスタイルを壊す可能性があります。
私のCSSフレームワークがLESS
またはSASS
の上に構築されている場合、CSSユニットテストはさらに適切になります。マクロを変更すると、すべてのスタイルが壊れる可能性があります。 。
ブラウザ(クライアント側)でCSSを「単体テスト」することは可能だと思います。単体テストというより、自動チェッカーのようなものです。
ユニットテストケース:
DOMセレクター:
.test1
.test2
#test3
これは常に最終的な属性である必要があります。
CSSAttribute1, CSSFinalValue1
CSSAttribute2, CSSFinalValue2
CSSAttribute3, CSSFinalValue3
JSでテストルールを設定する関数は次のようになります。
addCSSUnitTest(".test1, .test2, #test3", "margin-left: 4px; font-size: 8px");
次に、DOM要素にこの最終属性があるかどうかを確認します。
レンダリング後、すべてjavascriptで実行されます。しかし、とにかくこれは実用的ではありません。コードを大幅に増やす多くの単体テストケースを構築する必要があるからです。
また、クロスブラウザの「互換性」のために、reset.cssが常に必要です。
alternativeは、属性全体を保持する必要があることがわかっているCSSクラスを指定することになります。 DOMセレクターのリストを作成します。 jQueryを使用してCSSクラス属性を(CSSクラスから直接)取得し、それらがターゲットDOM要素に保持されているかどうかを確認します。この最後の方法はほぼ完全に自動化できますが、より複雑なjavascriptチェッカーが必要になります。最後の1つは、CSSでIDセレクター(例: "#test3")をチェックせず、クラス(例: ".test1")のみをチェックします
PhantomCSSを使用して自動視覚比較を行うことができます。次に、基本CSSスタイルのみをロードし、コンポーネントをすべての状態で表示し、他のコンポーネントからCSSをロードしないCSSモジュールユニットテストページを作成できます。そして、すべてのモジュールがロードされた完全なCSSファイルと比較できます。
UIを多用する大規模なプロジェクトで単体テストを設定しましたが、うまく機能しました。また、見た目よりもはるかに簡単でした。
getBoundingClientRect
または getComputedStyle
のような簡単なツールを使用して、それを hyperscript すばやく一時的なDOMツリーを作成すれば、準備は完了です。 tape-css でテストするときにボイラープレートを減らすために、 tape-css と記述しました。 )tape(-===-))==ですが、スタックはどのテストセットアップでも同様です。
昨日、新しいワークフローとそれが生産性をどのように向上させたかについての簡単なチュートリアルとライブ例を含む詳細なブログ投稿を公開しました: CSSユニットテストがどのように高速移動に役立ったか 。
CSSのユニットテストは、フレームワークとCSSへのアプローチによって異なります。
尋ねる質問:
CSSで特定のクラスをテストします(例:Assert.IsNotNull)
CSSプロパティを取得し、その属性を確認します。
まず、CSSファイルが存在するかどうかを確認してから、特定のクラスを探し、次に指定されたクラス内の属性を探します。
回帰テスト中にクラスの欠落を経験し、以前の調査結果からすぐに修正することができました。
私が試したことがないが、うまくいくかもしれない興味深いアプローチがあります:
Etvoilà:)