🍇
とりあえず手っ取り早く TypeScript で Jest のテストコードを試したいときの環境をサクッと作成する方法
概要
表題のとおり、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