StorybookのStoryをJestに取り込んでコンポーネントのテストをしたい
このとき、必要なライブラリは以下だとわかった
- @testing-library/react
- @storybook/testing-react
- @testing-library/jest-dom
@testing-library/react
はReactの仮想DOMを操作するのに必要な{ fireEvent, render, screen }
などの機能をもったライブラリ
@storybook/testing-react
はcomposeStories
を使って、Storyをjestで利用できるようにするライブラリ
const { Default } = composeStories(Stories);
@testing-library/jest-dom
はtoHaveTextContent
などの便利なマッチャーを使うために導入した
ただ、これだけではdocument is not defined
というエラーをはいてテストが失敗する
そこで、jest.config.jsに以下をいれてみる
module.exports = { testEnvironment: "jest-environment-jsdom",
これでJestでStoryを取り込んでテストできるようになった
ところで、Jest@v28からjsdom
がデフォルトではインストールされなくなった
なので、jest-environment-jsdom
をインストールして、jest.config.jsも以下のように書き直さなければならない
module.exports = { - testEnvironment: "jsdom", + testEnvironment: "jest-environment-jsdom", ... };