Jestを試してみた:JavaScriptテストフレームワークのレビュー

プログラミング

Jestとは、JavaScriptのテスト用のフレームワークです。
ここでは、Node.jsがインストールされていることを前提に、Jestを試してみます。
公式ドキュメントである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>

いかがでしたでしょうか。

JavaにJunitがあるように、JavaScriptにもJestという自動テストツールがあります。
後の改修を楽にするためにも、可能なら自動テストツールを導入した方が良いでしょう。

コメント

タイトルとURLをコピーしました