Open17

Reactでテスト駆動開発をする

nozominozomi

https://qiita.com/ossan-engineer/items/4757d7457fafd44d2d2f#jest-対-react-testing-library
この記事がjestとreact-testing-libraryの概要をしるには良かった

jestとreact-testing-libraryのペアが今は人気そう
色々記事を読んでは見たが、結局手を動かさないと分からなそうなので、良さげなチュートリアルを片っ端からやっていくっていうことをしようかな
具体的にやりたいこととしては

  • コンポーネントが内の関数が正しく動くかのテスト
  • 通信を使ったCRUD処理のテスト
    ができたら実践で導入していくことができそう
nozominozomi

通信を使ったCRUD処理のテスト

https://zenn.dev/takepepe/articles/msw-data-userflow-testing
これをするにはmswっていうのを使うのが良さそう
ただ、まだ完璧なテストというわけではなさそう

mockを作った場合データ構造が変わるたびにmockも一緒に修正しないといけないっていうのが結構なデメリットになるのでは?とか思ったけど、どうなんだろう?
これも実際に手を動かしてみないと見えてこないこといっぱいありそう

nozominozomi

react + graphqlのプロジェクトでテストを導入してみる
MockedProviderを使用して、
https://www.apollographql.com/docs/react/development-testing/testing/

https://testing-library.com/docs/example-react-router/#reducing-boilerplate
MemoryRouterオブジェクトを使う

MemoryRouter works when you don't need access to the history object itself in the test, but just need the components to be able to render and navigate.

nozominozomi

vitestを試してみる

https://vitest.dev/

https://dev.classmethod.jp/articles/intro-vitest/

happy-domを使ってみる

https://blog.hao.dev/setting-up-vitest-within-sveltekit-repo

tsconfig.node.json の修正が必要だった(修正するファイルあってる?)

nozominozomi

JestでESMのパッケージを読み込んだときにエラーが発生する

Details:

    /client/node_modules/antd/es/tooltip/style/index.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import '../../style/default.less';
                                                                                      ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1728:14)
      at Object.<anonymous> (node_modules/@ant-design/pro-utils/lib/components/LabelIconTip/index.js:12:1)

https://github.com/facebook/create-react-app/issues/9938

package.jsonにjestの設定を書くことで解決?