概要
Next.js
でのテスト実装は、アプリケーションの品質と安定性を保つために重要です。特に、JestとReact Testing Libraryを使用することで、コンポーネントのレンダリングや動作を効率的にテストできます。この記事では、Jest + React Testing Libraryを用いたテスト環境のセットアップから実際のテスト実行までの流れを解説します。
Jest + React Testing Libraryの導入
まず、JestとReact Testing Libraryのセットアップを行います。
必要なパッケージのインストール
以下のコマンドで必要なパッケージをインストールします。
npm install --save-dev jest jest-environment-jsdom @testing-library/react @testing-library/jest-dom
TypeScriptを使用している場合は、追加で次のパッケージもインストールします。
npm install --save-dev ts-jest @types/jest
Jestの設定
プロジェクトのルートディレクトリにjest.config.js
を作成し、以下の設定を追加します。
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jest-environment-jsdom',
moduleNameMapper: {
'\\.(css|less|sass|scss)$': 'identity-obj-proxy',
},
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
'^.+\\.(js|jsx)$': ['babel-jest', { presets: ['next/babel'] }],
},
};
この設定で、TypeScriptとJSXファイルをJestでテストできるようにします。
package.jsonの編集
テストを実行できるように、package.json
のscripts
に以下を追加します。
"scripts": {
"test": "jest --watchAll"
}
テストファイルの作成
次に、__tests__
ディレクトリをプロジェクトのルートに作成し、その中にテストファイルを配置します。例えば、sample.test.tsx
というファイルを作成し、以下のコードを追加します。
import { render, screen } from '@testing-library/react';
import Sample from '../components/Sample';
describe('Sample Component', () => {
it('renders correctly', () => {
render(<Sample />);
const heading = screen.getByRole('heading', { name: /Hello/i });
expect(heading).toBeInTheDocument();
});
});
このテストは、Sampleコンポーネントが「Hello」というテキストを含む見出しを正しくレンダリングするかどうかを検証します。
テストの実行
npm run test
コマンドで、テストを実行します。テストが実行され、結果がターミナルに表示されます。--watch
オプションを使用することで、ファイルが変更されるたびにテストが自動的に再実行されます。
まとめ
JestとReact Testing Libraryを使ったNext.js
のテスト環境は、比較的簡単に構築できます。これにより、コンポーネントの単体テストやUIテストを効率的に行うことができ、コードの品質を保ちながら安心して開発を進めることが可能です。テスト環境をしっかりと整え、プロジェクトのスケールに応じてテスト範囲を拡大していくことが重要です。
参照:
Qiitaでのセットアップガイド