JestはFacebookが公開しているJavaScriptの単体テスト用フレームワークです。テスト用フレームワークのJasmineを使いやすく拡張したもので、expect(value).toBe(other)の書式が使えます。
- 公式GitHub>GitHub - facebook/jest: Painless JavaScript Unit Testing built on top of the Jasmine test framework.
- 公式サイト>Jest | Painless JavaScript Unit Testing
GitHubの方が最新情報が揃っているので、おかしいと思ったらGitHubを見るといいです。
Jestの特徴
- テスト用フォルダーから自動的にテストスイート(テスト用の設定ファイル)を見つけて実行する
- テストを実行するときに、自動的に依存関係をモックで解決する
- 非同期のテストを同期的に実行する
- jsdomを利用して、擬似的なDOMを実装してテストを実行する。そのため、コマンドラインでテストができる
- テストを並列に実行できるのですぐにテストが終わる
Getting Started
公式サイトのトップページからざっくり和訳です。
以下のような「sum.js」ファイルをテストします。
// sum.js function sum(value1, value2) { return value1 + value2; } module.exports = sum;
起動して実行するまでに7手順です。
- 1. 適当なフォルダーを作り(~/git/jest-testなど)、その中に上記のsum.jsを生成する(追記)
- 2. 上記のフォルダー内に__tests__というフォルダーを作成して、以下のようなsum-test.jsというファイルを作成する
// __tests__/sum-test.js jest.dontMock('../sum'); describe('sum', function() { it('adds 1 + 2 to equal 3', function() { var sum = require('../sum'); expect(sum(1, 2)).toBe(3); }); });
- 3. ターミナルで以下のコマンドを実行して、npm用のpackage.jsonj村を作成する
- 公開しないのであれば、質問は全てEnterで進めて、最後に「y」で良い
- 4. ターミナルで以下を実行して、Jestのコマンドラインインターフェース(jest-cli)をインストールする
npm instll jest-cli --save-dev
-
- JestはES2015の機能を使用するので、Node.jsのバージョンが4.0.0以上である必要がある。インストール中に警告が表示されたら、nodebrewなどを使ってNodeをバージョンアップする
- 5. package.jsonを開いて、"scripts"の項目をjestでテストするために以下のように書き換えて上書き保存する
{ ・・・ "scripts": { "test": "jest" }, ・・・ }
- 6. npm test でテスト実行
- 7. ファイルを監視して、更新があったら自動的にテストを動かすwatchを行う場合は以下のコマンド
npm test -- --watch
-
- 上記だとコマンドの入力時に1度テストを実行する。起動時のテストを省略する場合は以下
npm test -- --watch=skip
この後・・・
以上で最低限の実行確認ができました。さらなる使い方や、ReactでのテストなどはJest | Painless JavaScript Unit Testing