LoginSignup
0
0

Node.js環境(Typescript)でJestを使用してテストを行う

Last updated at Posted at 2023-12-31

使用環境

  • windows11
  • Node.js v18.17.1
  • Visual Studio Code(VSCode)

Node.js環境は構築済みのところからの記事になります。
(npm initなどは終了してプロジェクトが作成されている状態)

フォルダ構成

─ project rootフォルダ
    ├ scr/ : テストするTypescriptファイル用フォルダ
      ├ sample.ts : テスト対象ファイル
    ┝ test/ : テストコード用フォルダ
      ├ sample.test.ts : テストファイル
    ┝ packege.json
    ┝ jest.setup.ts
    ┝ jest.config.js
    ┝ tsconfig.json
    ┝ node_modules

必要なパッケージをインストール

Typescript環境用

  • ts-node
  • typescript
  • @types/node
// パッケージをインストール
npm -D i "ts-node" "typescript" "@types/node"

Typescript環境を構築済みの場合はスキップ

テスト用パッケージ(Jest)

  • jest
  • @types/jest
  • ts-jest
// パッケージをインストール
npm -D i "jest" "@types/jest" "ts-jest"

これでテストを行うためのパッケージの準備は完了です

jestのセットアップファイルを作成

下記2つのファイルを編集します。ない場合はpackage.jsonと同じフォルダ内に作成してください。

jest.config.js

  • テストの実行環境などを指定
jest.config.js
/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports ={
    preset:'ts-jest',
    testEnvironment:'node',
    setupFilesAfterEnv:["./jest.setup.ts"]
}

jest.setup.ts

  • このファイルはテストのオプション設定なので、なくてもテストは可能です
jest.setup.ts
// テストで使用したい環境変数を定義
process.env.HOGEHOGE = "env_hoge"
process.env.FUGAFUGA = "env_fuga"

// テストのタイムアウトを設定
jest.setTimeout(30000)

tsconfig.json

  • VSCodeでの文法エラーの検知などを回避する設定を追加
tsconfig.json
// 一部抜粋
{
  "compilerOptions": {
      "target": "es2016",
      "module": "commonjs", 
        "types": ["jest"], 
    },
     "include": ["**/src/**/*","**/test/**/*"] 
}

サンプルコードを準備

src/sample.tsにサンプルコードを記述

sample.ts
export const handler = async (event: any) => {
  const env_hoge = process.env.HOGEHOGE
  console.log(env_hoge)  
  return "finish"
};

テストコードを準備

test/sample.test.tsにテストコードを記述

sample.test.ts
import { handler } from "../src/sample";

describe("正常系",()=>{
   test("環境変数をログ出力",async()=>{
       // こちらでも環境変数が取得できる
       const testEnvFuga = process.env.FUGAFUGA
       // 環境変数が取れていることを確認
       expect(testEnvFuga).toBe("env_fuga");
       
       const event = ""
       const response = await handler(event)

       // レスポンスが"finish"になっていることを確認
       expect(response).toBe("finish");
   });
});

テストを実施

下記コマンドでプロジェクト内のテストコードをすべて実施する

 npx jest

すると下記みたいな感じでテスト結果が出力されます

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        10.821 s

終わりに

以上がTypescript環境でテストを実行するまでの基本的な流れになります。
参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0