1. ホーム
  2. reactjs

酵素、ReactTestUtils、react-testing-libraryの違いについて

2023-10-09 10:32:59

質問

反応テストのための酵素、ReactTestUtilsとreact-testing-libraryの違いは何ですか?

ReactTestUtilsのドキュメントに書いてあります。

ReactTestUtilsは、Reactコンポーネントを好みのテストフレームワークで簡単にテストできるようにします。 フレームワークで簡単にテストできるようにします。

酵素のドキュメントに書いてあるだけです。

Enzyme は React 用の JavaScript テストユーティリティで、React Components の出力をより簡単にアサーション、操作、追跡することができます。 React Components の出力をアサーション、操作、および追跡することを容易にします。

React-testing-libraryのドキュメントです。

react-testing-libraryは、Reactコンポーネントをテストするための非常に軽量なソリューションです。 Reactコンポーネントをテストするための非常に軽量なソリューションです。react-domの上に軽いユーティリティ機能を提供します。 react-domの上に軽いユーティリティ機能を提供します。

なぜ実際にはどのソリューションも簡単で、他のソリューションでは実現できないのでしょうか?

どのように解決するのですか?

ReactTestUtilsは、Reactコンポーネントをテストするための必要最低限のものを提供してくれます。大きなアプリケーションに使われているのを見たことがない。

Enzymeとreact-testing-libraryはどちらも良いライブラリで、アプリケーションをテストするために必要なすべてのツールを与えてくれます。しかし、それらは2つの異なった哲学を持っています。

Enzymeでは、コンポーネントの内部動作にアクセスすることができます。状態の読み取りと設定が可能で、テストの実行を高速化するために子プロセスをモックすることができます。

一方、react-testing-libraryは実装の詳細にアクセスすることはできません。コンポーネントをレンダリングし、それらと対話するためのユーティリティメソッドを提供します。このアイデアは、ユーザーが行うのと同じ方法でアプリケーションと通信するべきだというものです。ですから、コンポーネントの状態を設定するのではなく、ユーザーがその状態に到達するために行うアクションを再現するのです。

私の経験では、Enzymeは把握しやすいですが、長い目で見るとメンテナンスが大変です。react-testing-libraryは、平均してもう少し複雑なテストを書かなければなりませんが、自分のコードに高い信頼を与えるという報酬があります。