🍇

とりあえず手っ取り早く TypeScript で Jest のテストコードを試したいときの環境をサクッと作成する方法

2023/12/23に公開

概要

表題のとおり、TypeScript で Jest のテストをローカル環境(Visual Studio Code等)で気軽に試す場合でも後述のコマンド入力などある程度準備する必要があったため、備忘録として記載します。

TypeScript で Jest のテストコードを試す環境の作成方法

package.json 作成

npm init -y

パッケージインストール

npm i -D typescript jest @types/jest ts-jest

jest.config.js ファイル作成

npx ts-jest config:init

package.json の下記部分を加筆修正

package.json
"scripts": {
    "test": "jest" // ← "test": "echo \"Error: no test specified\" && exit 1"を左記に書き換える
  },

動作確認用コード作成

sum.ts
export function sum(a: number, b: number) {
  return a + b;
}
sum.test.ts
import { sum } from './sum';

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

テスト実行

成功のパターン

実行結果(成功パターン)
$ npm run test

> test@1.0.0 test
> jest

 PASS  src/sum.test.ts
  ✓ adds 1 + 2 to equal 3 (5 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.511 s
Ran all test suites.

失敗のパターン

sum.test.ts ファイル中で以下の用に修正してテストをわざと失敗させてみます。

sum.test.ts
import { sum } from './sum';

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 1)).toBe(3); // ← sum(1, 2) を sum(1, 1) に修正
});
実行結果(失敗パターン)
$ npm run test

> test-01@1.0.0 test
> jest

 FAIL  ./sum.test.ts
  ✕ adds 1 + 2 to equal 3 (3 ms)

  ● adds 1 + 2 to equal 3

    expect(received).toBe(expected) // Object.is equality

    Expected: 3
    Received: 2

      2 |
      3 | test('adds 1 + 2 to equal 3', () => {
    > 4 |   expect(sum(1, 1)).toBe(3);
        |                     ^
      5 | });
      6 |

      at Object.<anonymous> (sum.test.ts:4:21)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        1.381 s, estimated 2 s
Ran all test suites.

補足

tsconfig.jsonがプロジェクトのプロジェクトルートのディレクトリにないと、下記の警告が出力される可能性があります。

ts-jest[config] (WARN) message TS151001: If you have issues related to imports, you should consider setting `esModuleInterop` to `true` in your TypeScript configuration file (usually `tsconfig.json`). See https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typescript-2-7/#easier-ecmascript-module-interoperability for more information.

tsc --initコマンド等で、tsconfig.jsonをプロジェクトルートのディレクトリに作成することで上記の警告は消えます。

警告メッセージなので、本検証の動作自体に直接影響はありませんが、気になる方はtsc --initコマンドをお試しください。

参考資料

Discussion