JavaScript開発者のためのJestテストガイド
テストを行うことで、バグを早期に発見できます。コードの品質が向上し、既存のコードを壊すことなく新機能をリリースできるようになります。
Jestは、JavaScriptおよびNode.js向けの非常に人気のあるテストツールです。Metaによって作成されました。TypeScript、React、Next.js、Express.jsと組み合わせて使用できます。
なぜJestを使うのか?
- セットアップがほとんど不要です。
- テストを並列実行するため、高速です。
- モックツールが含まれています。
- コードカバレッジレポートを表示します。
- 明確なエラーメッセージを提供します。
Jestのセットアップ方法:
- Node.jsプロジェクトを作成する:
npm init -y - Jestをインストールする:
npm install --save-dev jest package.jsonのscriptsを更新し、"test": "jest"を追加する- 次のコマンドでテストを実行する:
npm test
シンプルなテストの書き方:
sum.jsを作成:
function sum(a, b) {
return a + b;
}
module.exports = sum;
sum.test.jsを作成:
const sum = require("./sum");
test("adds two numbers", () => {
expect(sum(2, 3)).toBe(5);
});
Jestの必須ツール:
- Assertions(アサーション):
expect()とtoBe()を使用して値を検証します。 - Objects(オブジェクト):
toEqual()を使用してオブジェクトや配列を比較します。 - Organization(整理):
describe()を使用して関連するテストをグループ化します。 - Async(非同期): Jestは
awaitを使用して非同期関数を自然に扱えます。 - Mocks(モック):
jest.fn()を使用して関数をシミュレートします。これにより、実際のAPI呼び出しやデータベースへのアクセスを回避できるため、テストを高速に保てます。 - Hooks(フック):
beforeEach()とafterEach()を使用して、テストデータのセットアップやクリーンアップを行います。
成果を測定する:
npx jest --coverageを実行して、カバレッジレポートを確認します。これにより、コードのどの部分にテストが不足しているかがわかります。
APIのテスト:
APIエンドポイントのテストにはSupertestを使用します。実際のサーバーを起動することなく、ステータスコードを確認できます。
スナップショットテスト:
ReactではmatchSnapshot()を使用します。現在のレンダリング結果を保存済みのバージョンと比較することで、予期しないUIの変更を発見するのに役立ちます。
ベストプラクティス:
- 結果(期待される振る舞い)を記述するテストを書く。
- 内部のコード構造をテストすることを避ける。
- 単体テストでは実際のデータベースを使用しない。
- 意味のあるカバレッジに焦点を当てる。
Jestをマスターすることで、信頼性の高いソフトウェアを構築できるようになります。