メインコンテンツにスキップ

Angular Testing Library

Angular Testing Library は、DOM Testing Library を基盤としてAngularコンポーネントを扱うためのAPIを追加しています。ATLバージョン17以降、@testing-library/dom もインストールする必要があります。

npm install --save-dev @testing-library/angular @testing-library/dom

または、ng add コマンドを使用できます。これは、プロジェクトをAngular Testing Libraryを使用するように設定し、@testing-library/dom のインストールも含みます。

ng add @testing-library/angular

問題点

Angularコンポーネントの保守性の高いテストを作成したいと考えています。この目標の一環として、テストにコンポーネントの実装の詳細を含めず、テストが意図した通りの信頼性を提供することに焦点を当てたいと考えています。そのため、コンポーネントのリファクタリング(機能ではなく実装の変更)によってテストが壊れたり、チームの作業が遅延したりしないように、テストベースを長期的に保守できるようにしたいと考えています。

このソリューション

Angular Testing Library は、Angularコンポーネントをテストするための非常に軽量なソリューションです。より良いテストプラクティスを促進する方法で、DOM Testing Library の上に軽量なユーティリティ関数を提供します。その主要な指針となる原則は次のとおりです。

テストがソフトウェアの使用方法に似ていればいるほど、より多くの信頼を得ることができます。

そのため、レンダリングされたAngularコンポーネントのインスタンスを扱うのではなく、テストは実際のDOMノードを扱います。このライブラリが提供するユーティリティは、ユーザーと同じ方法でDOMをクエリすることを容易にします。ユーザーと同じようにラベルテキストでフォーム要素を見つけたり、ユーザーと同じようにテキストからリンクやボタンを見つけたりします。また、テキストコンテンツとラベルが意味をなさない場合や実用的でない場合の要素の「エスケープハッチ」として、`data-testid` で要素を見つけるための推奨される方法も公開しています。

このライブラリは、アプリケーションのアクセシビリティを向上させ、ユーザーが使用するのと同じ方法でコンポーネントを使用するテストに近づけることができます。これにより、実際のユーザーがアプリケーションを使用するときにアプリケーションが動作するという、より大きな自信をテストから得ることができます。

Angular Testing Library

  • DOM Testing Library から query および fireEvent ユーティリティ関数を再エクスポートします。
  • コンポーネントの fireEvent 関数をカプセル化して、イベント発生後に自動的に detectChanges() を呼び出します。
  • テストフレームワークに依存せず、すべてのテストフレームワークで動作します.