Open3
Reactプロジェクトのテストについて
これからフロントエンドのテストを導入していくPJがあり、いい機会なので可能な限り広く調査してみようと思います。
まずはReactの公式ドキュメントから。
トレードオフ
ツール選びやテストの粒度を考えるときに重要なトレードオフとして下記の2点が記述されています。
実行速度 vs 環境の現実度: 変更を加えてから結果を見るまでのフィードバックが早いツールは、ブラウザでの動作を正確に模倣しません。一方実際のブラウザ環境を使うようなツールは、イテレーションの速度が落ちる上 CI サーバでは壊れやすいです。
モックの粒度 コンポーネントのテストでは、ユニットテストとインテグレーションテストの区別は曖昧です。フォームをテストする時、そのテストはフォーム内のボタンもテストすべきでしょうか。それともボタンコンポーネント自体が自身のテストを持つべきでしょうか。ボタンのリファクタリングはフォームのテストを壊さないべきでしょうか。
スナップショットテストは非推奨
レシピ集のスナップショットテストの項目に記載がありますが、スナップショットを利用するよりも個別のアサーションによるテストが推奨されています。
一般的には、スナップショットを使うよりもより個別的なアサーションを行う方がベターです。このようなテストは実装の詳細を含んでいるために壊れやすく、チームはスナップショットが壊れても気にならないようになってしまうかもしれません。
まとめようとしているもの