技術とか戦略とか

SIerで証券レガシーシステムを8年いじってからSESに転職した普通の文系SEによる技術ブログ。

Jestを試してみた

Jestとは、JavaScriptのテスト用のフレームワークです。
ここでは、Node.jsがインストールされていることを前提に、Jestを試してみます。
公式ドキュメントであるGetting Started(https://jestjs.io/docs/ja/getting-started)を参考に、説明が割愛されている箇所を補いながら説明していきます。
 
【前提】
・WindowsOSで作業を行います。
・Node.jsを事前にインストールし、"Node.js Command Prompt"でコマンド発行します。
・今回の確認では、C:\tmp\ で作業を行います(以下「作業フォルダ」)。
 
【インストール】
・cdコマンドで作業フォルダに移動します。
cd C:\tmp\
 
・npmコマンド(ライブラリのインストール用のコマンド)を発行しJestを取得します。
npm install --save-dev jest
 
・コマンドを発行すると、以下のように出力されます。
C:\tmp>npm install --save-dev jest
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN saveError ENOENT: no such file or directory, open 'C:\tmp\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^2.1.2 (node_modules\jest-haste-map\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN enoent ENOENT: no such file or directory, open 'C:\tmp\package.json'
npm WARN tmp No description
npm WARN tmp No repository field.
npm WARN tmp No README data
npm WARN tmp No license field.

+ jest@26.6.3
added 511 packages from 351 contributors and audited 512 packages in 92.123s

23 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities


C:\tmp>
 
・作業フォルダ直下に、以下のようなフォルダが作成されれば成功です。
C:\tmp>dir node_modules\jest
ドライブ C のボリューム ラベルは  です
ボリューム シリアル番号は  です

C:\tmp\node_modules\jest のディレクト

2021/01/06 21:45 <DIR> .
2021/01/06 21:45 <DIR> ..
2021/01/06 21:44 <DIR> bin
2021/01/06 21:44 <DIR> build
1985/10/26 17:15 1,086 LICENSE
2021/01/06 21:45 <DIR> node_modules
2021/01/06 21:45 2,084 package.json
1985/10/26 17:15 551 README.md
3 個のファイル 3,721 バイト
5 個のディレクトリ バイトの空き領域

C:\tmp>
 
※なお、yarnコマンドでも取得できます。
 
【実行準備】
・作業フォルダに、"package.json"を作成します。内容は以下の通りです。
{
 "scripts": {
  "test": "jest"
 }
}
 
※これで、npmコマンドの引数に"test"を指定すると、コマンド"jest"が発行されるようになります。
 
【テスト対象のスクリプト作成】
・作業フォルダに、"sum.js"を作成します。内容は以下の通りです。
function sum(a, b) {
 return a + b;
}
module.exports = sum;
 
【テストコード作成】
・作業フォルダに、"sum.test.js"を作成します。内容は以下の通りです。
const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
 expect(sum(1, 2)).toBe(3);
});
 
【実行】
・npmコマンドによりテストを実行します。
npm test
 
・以下のように、作業フォルダ直下のテストコードが実行されれば成功です。
C:\tmp>npm test

> @ test C:\tmp
> jest

PASS ./sum.test.js (7.241 s)
√ adds 1 + 2 to equal 3 (10 ms)

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

C:\tmp>