Open7

読者コミュニティ|React テスト応用、テストに悩む人へ

isomuraisomura

5章途中まで読みました。
Reactのコンポーネントテストにまだ慣れていないのでこの本のような解説はとてもありがたいです。

jestやmochaなどのフレームワークの場合、cleanup()はreact-testing-library側が自動でやってくれるようなので明示的な指定は不要かと思います。
https://testing-library.com/docs/react-testing-library/api/#cleanup

Satoshi TakedaSatoshi Takeda

コメントありがとうございます。

Please note that this is done automatically if the testing framework you're using supports the afterEach global and it is injected to your testing environment (like mocha, Jest, and Jasmine). If not, you will need to do manual cleanups after each test.

これは全く知りませんでした。脳死で毎回 cleanup してました。
別のアップデートを予定しているのでそのアップデートで一緒に修正しますね。

ご指摘感謝です、ありがとうございます🙏

Satoshi TakedaSatoshi Takeda

コンポーネントがアンマウントされる前に、非同期でコールバックキューに入った処理が実行されないようにするには useEffect の引数となる関数がクリーンアップ処理を返すよう明示する必要がある。

本書ではテストの書き方を優先し触れていないが補足的に書く必要がありそう。

  • useRef などを使ってクリーンアップフラグが立ったらキャンセルさせる
  • AbortController が利用できるならば fetch のオプションにシグナルを渡す

今回は fetch を扱っているので後者が適切に思える。

https://zenn.dev/tkdn/books/react-testing-patterns/viewer/testing-with-fetchmock#1.-ローディング-ui-のテスト

Satoshi TakedaSatoshi Takeda

タイポの指摘。

01 はじめに:この本について

さまざまな解説が多いため本書基本的な扱い方は解説しません。

04 同期的カウンタコンポーネントのテスト

全記術

Satoshi TakedaSatoshi Takeda

https://twitter.com/mizdra/status/1382729337007337480

たしかに how ばかりで why が少なかった。

ユーザーのユースケースに合わせた testing-library family の思想(まあいわば KCD のだけど)と手法、一般的なテスト手法(値マッチなど)を比較してどう違うか、なぜ前者だと嬉しいのか、開発者が安心してコンポーネントに手を入れやすいか、あたりにも各章触れると良さそう。