# React/TypeScript/Jest/testing-library環境構築 viteでプロジェクトを作ってサーバーを立ち上げられるところまで準備する jestをインストールする TypeScriptなのでTypeも一緒に入れる ts-jestはtsをjsに変換するために利用 ``` $ npm i --save-dev jest $ npm i --save-dev @types/jest $ npm i --save-dev ts-jest ``` jest.config.jsを作る ``` export default { preset: "ts-jest", testEnvironment: "jsdom", setupFilesAfterEnv: ["./jest.setup.ts"], transform: { "^.+\\.(ts|tsx)$": "ts-jest", }, moduleNameMapper: { "\\.(css|less)$": "identity-obj-proxy", }, }; ``` jest.setup.tsを作る(拡張子がjsではない) ``` import "@testing-library/jest-dom"; import { config } from "dotenv"; config(); ``` ``` $ npm install dotenv ``` tsconfig.jsonを変更する。 ``` { "compilerOptions": { "target": "ESNext", "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext"], "allowJs": false, "skipLibCheck": true, "esModuleInterop": false, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "module": "ESNext", "moduleResolution": "Node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", "types": ["node", "jest", "@testing-library/jest-dom"] }, "include": ["src"], } ``` react-testing-libraryの導入 ``` $ npm i --save-dev @testing-library/react $ npm i --save-dev @testing-library/jest-dom $ npm i --save-dev jest-environment-jsdom $ npm i --save-dev @testing-library/user-event ``` package.jsonにtestを追加する ``` "test": "jest" ``` src/__tests__を作成する src/__tests__/AppComponent.spec.tsxを作成する App.tsxをいかに修正 ``` function App() { return ( <> <h1>Hello World</h1> </> ); } export default App; ``` タイトルがHelloWorldであることをテストする AppComponent.spec.tsxをかく ``` import App from "../App"; import { render, screen } from "@testing-library/react"; describe("title", () => { it("should render title", () => { render(<App />); expect(screen.getByText("Hello World")).toBeInTheDocument(); }); }); ``` jest.setup.tsでdotenvを利用するのでインストール ``` $ npm i dotenv ``` テストを実行して通れば成功 ``` $ npm run test ```