検索
ホームページウェブフロントエンドCSSチュートリアル人間のコンポーネントテストを反応します

人間のコンポーネントテストを反応します

効果的な反応コンポーネントテストを作成することは、直感的で、簡単で、簡単に保守可能でなければなりません。ただし、現在のテストライブラリのエコシステムは不足していることが多く、開発者は一貫して堅牢なJavaScriptテストを書くことを妨げています。テスト反応コンポーネントとDOMには、JestやMochaなどの人気のあるテストランナーをめぐる高レベルのラッパーが頻繁に必要です。

課題:退屈で紛らわしいテスト

現在のテスト方法は、しばしば退屈で混乱していることがわかります。テストロジックを表現するためのjQueryのようなチェーンスタイルは面倒であり、Reactのコンポーネントアーキテクチャとは一致しません。酵素を使用しているように、一見読みやすいコードでさえ、過度に冗長になる可能性があります。

 expect(screen.find( "。view")。hasclass( "Technologies"))。to.equal(true);
expect(screen.find( "h3")。text())。toequal( "Technologies:");
想像(screen.find( "ul")。children())。to.have.lengthof(4);
期待する(screen.contains([)
  // ...
])。to.equal(true);
expect(screen.find( "button")。text())。toequal( "back");
expect(screen.find( "button")。hasclass( "small"))。to.equal(true);

これは、比較的単純なDOM構造に対応します。

<div classname="view technologies">
  <h3 id="テクノロジー">テクノロジー:</h3>
  <ul>
<li>JavaScript</li>
<li> Reactjs</li>
<li> nodejs</li>
<li> webpack</li>
</ul>
  <button classname="small">戻る</button>
</div>

より複雑なコンポーネントをテストすると、これらの問題が増幅され、プロセスがさらに扱いにくくなります。 HTMLを生成するためのReactの原則とテストアプローチの間の切断は、非効率的で維持が困難なテストにつながります。単純なJavaScriptチェーンは、長期的な保守性には不十分です。

2つの重要な問題が現れます:

  • コンポーネント固有のテストアプローチ:コンポーネントの動作に合わせたテストを効果的に記述する方法。
  • 冗長性の最小化:不要なコードを排除し、テストの読みやすさを改善する方法。

実用的なソリューションを探索する前に、これらに対処しましょう。

反応コンポーネントテストへの集中的なアプローチ

基本的な反応成分を考えてみましょう。

機能歓迎(小道具){
  戻る<h1 id="こんにちは-props-name">こんにちは、{props.name}</h1> ;
}

この関数はpropsを受け入れ、JSXを使用してDOMノードを返します。コンポーネントは本質的に関数であるため、それらをテストするには、関数の動作の検証が含まれます。引数が返された結果にどのように影響するか。 Reactコンポーネントの場合、これはprops設定とレンダリングされたDOMの検証につながります。 UIを変更するユーザーインタラクション(クリック、マウスオーバーなど)もプログラム的にトリガーする必要があります。

テストの読みやすさの向上:アレンジアッサートパターン

明確で読みやすいテストが重要です。これは、簡潔な言葉遣いと一貫した構造によって達成されます。 Arrange-act-Assert(AAA)パターンは理想的です。

  1. アレンジ:コンポーネントの小道具を準備します。
  2. ACT:コンポーネントをレンダリングし、ユーザーインタラクションをトリガーします。
  3. アサート:コンポーネントのマークアップに基づいて、予想される結果を確認します。

例:

それ(「大きなボタンをクリックする必要があります」、()=> {
  // 整える
  propss.size = "large";

  // 活動
  const component = mount(send);
  Simulate(component、{type: "" "});

  // assert
  想像(component、 "class"、 "clicked");
});

より簡単なテストでは、フェーズを組み合わせることができます。

それ( "カスタムテキストでレンダリングする必要があります"、()=> {
  期待する(「マウントされたとき」、「テキストを持つ」、「送信」);
});

現在のテスト慣行の改善

以前の例は、概念的には健全ですが、標準ツールでは簡単に達成できません。このより一般的なアプローチを考えてみましょう。

それ( "テクノロジービューを表示する必要があります"、()=> {
  const container = document.createelement( "div");
  document.body.appendChild(container);

  act(()=> {
    Reactdom.Render(<profilecard></profilecard> 、 容器);
  });

  const button = container.queryselector( "button");

  act(()=> {
    button.dispatchevent(new Window.MouseEvent( "click"、{bubbles:true}));
  });

  const details = container.queryselector( "。詳細");

  expect(details.classlist.contains( "Technologies"))。tobe(true);
});

これをより抽象的なバージョンと比較してください。

それ( "テクノロジービューを表示する必要があります"、()=> {
  const component = mount(<profilecard></profilecard> );

  Simulate(component、{type: "click"、ターゲット: "ボタン"});

  expect(component、 "テストIDに照会された"、「詳細」、「クラスを持つ」、「テクノロジー」);
});

これはよりクリーンで読みやすいです。このレベルの抽象化は、予期しないjsで達成可能です。

予期しないjを使用したテスト

予期しないJSは、さまざまなテストフレームワークと互換性のある拡張可能なアサーションライブラリです。そのプラグインシステムと構文は、Reactコンポーネントテストを簡素化します。予期しないJSの内部の仕組みを深く掘り下げるのではなく、使用法と例に焦点を当てます。

例:プロファイルカードコンポーネント

ProfileCardコンポーネントをテストします(Brevityのためにコード省略が省略されていますが、参照されたGitHubリポジトリで使用できます)。

プロジェクトのセットアップ

フォローするには、GitHubリポジトリをクローンし、指示に従ってプロジェクトをセットアップしてテストを実行します。

コンポーネントテスト

テスト( src/components/ProfileCard/ProfileCard.test.js )は、AAAパターンを利用します。

  1. プロップのセットアップ: Eachがデフォルトの小道具をセットアップするbeforeEach
前に(()=> {
  小道具= {
    データ: {
      名前:「ジャスティンケース」、
      投稿:45、
      CreationDate: "01.01.2021"、
    }、
  };
});
  1. 特定のテストケース:例には、「オンライン」アイコンのテスト、バイオテキスト、テクノロジービュー(データの有無にかかわらず)、ロケーションディスプレイ、コールバック機能の実行、デフォルトのプロップでのレンダリングが含まれます。各テストケースは、アレンジアサートパターンを明確に示しています。 (Brevityのために詳細なテストケースは省略されていますが、GitHub Repoで入手できます)。

  2. ランニングテスト:すべてのテストはyarn testで実行されます。

結論

この例は、反応成分テストに対するより効果的なアプローチを示しています。コンポーネントを関数として表示し、AAAパターンを採用することにより、より保守可能で読みやすいテストを作成できます。テストライブラリの選択は、コンポーネントのレンダリングとDOM比較を効果的に処理する能力によって導かれる必要があります。予期しないjsは、この点で強力な候補です。完全な理解とさらなる実験のために、提供されたGithubリポジトリを調べてください。

以上が人間のコンポーネントテストを反応しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTMLのCSSファイルをリンクするための究極のガイドHTMLのCSSファイルをリンクするための究極のガイドMay 13, 2025 am 12:02 AM

CSSファイルをHTMLにリンクすることは、HTMLの一部で要素を使用することで実現できます。 1)タグを使用して、ローカルCSSファイルをリンクします。 2)複数のタグを追加することにより、複数のCSSファイルを実装できます。 3)外部CSSファイルは、そのような絶対URLリンクを使用します。 4)ファイルパスとCSSファイルの読み込み順序の正しい使用を確認し、パフォーマンスを最適化すると、CSSプリプロセッサを使用してファイルをマージできます。

CSS Flexbox vsグリッド:包括的なレビューCSS Flexbox vsグリッド:包括的なレビューMay 12, 2025 am 12:01 AM

FlexBoxまたはグリッドの選択は、レイアウト要件によって異なります。1)FlexBoxは、ナビゲーションバーなどの1次元レイアウトに適しています。 2)グリッドは、雑誌のレイアウトなどの2次元レイアウトに適しています。この2つは、レイアウト効果を改善するためにプロジェクトで使用できます。

CSSファイルを含める方法:メソッドとベストプラクティスCSSファイルを含める方法:メソッドとベストプラクティスMay 11, 2025 am 12:02 AM

CSSファイルを含める最良の方法は、タグを使用してHTMLパーツに外部CSSファイルを導入することです。 1.タグを使用して、外部CSSファイルを導入します。 2。小さな調整のために、インラインCSSを使用できますが、注意して使用する必要があります。 3.大規模プロジェクトでは、@Importを介して他のCSSファイルをインポートするために、SASS以下などのCSSプリプロセッサを使用できます。 4。パフォーマンスのために、CSSファイルをマージし、CDNを使用し、CSSNANOなどのツールを使用して圧縮する必要があります。

FlexBox対グリッド:両方を学ぶべきですか?FlexBox対グリッド:両方を学ぶべきですか?May 10, 2025 am 12:01 AM

はい、Youはrelearnbothlexboxandgrid.1)FlexBoxisidealforone-Dimensional、FlexiblleayoutslikenavigationMenus.2)Gridexcelsintwo-digsignssuchasmagazinelayouts.3)Bothenhanceslaysutibulivedibulisunivedivition、floctonsulururを

軌道力学(またはCSSキーフレームアニメーションの最適化方法)軌道力学(またはCSSキーフレームアニメーションの最適化方法)May 09, 2025 am 09:57 AM

独自のコードをリファクタリングするのはどのように見えますか?ジョン・レアは、彼が書いた古いCSSアニメーションを選び、それを最適化するという思考プロセスを歩きます。

CSSアニメーション:それらを作成するのは難しいですか?CSSアニメーション:それらを作成するのは難しいですか?May 09, 2025 am 12:03 AM

cssanimationsArenotintinlentyhardbutrepracticeanderstanding ofcsspropertiesandtimingfunctions.1)

@KeyFrames CSS:最も使用されているトリック@KeyFrames CSS:最も使用されているトリックMay 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversitility andpowerincreatingsmoothcssanimations.keytricksinclude:1)defingsmoothtransitionsbetweenstates、2)AnimatingMultipleProperiessimally、3)3)bendorprefixesforbrows -compativity、4)組み合わせwithjavasfo

CSSカウンター:自動番号の包括的なガイドCSSカウンター:自動番号の包括的なガイドMay 07, 2025 pm 03:45 PM

csScounterSareSareusedTomageautomaticinginginwebdesigns.1)それらは、コンテンツ、リスト、および積極的なものを使用することができます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール