generated at
Jest


概要
Meta(旧: Facebook)によって開発された テストフレームワーク
Node.js 上で実行される
そのため、フロントエンドのコードをテストする際には jsdom というライブラリを用いる
jsdom を用いると、Node.js 上で(ほとんどの)ブラウザ API をシミュレートできる

インストール
sh
$ npm install --save-dev jest
--save-dev : 開発専用の依存関係( devDependencies )としてインストールするためのフラグ
sh
$ npm install --save-dev jest @types/jest ts-jest
jest.config.js の作成も必要
jest.config.js
module.exports = { preset: "ts-jest", testEnvironment: "node", };

実行
npxパッケージランナー)から実行する
sh
$ npx jest
ただし、通常 package.json scripts に追加し、 npm コマンド から実行する
package.json
{ // ... "scripts": { "test": "jest" }, // ... }
sh
$ npm test
ウォッチモード
--watchAll を付けて実行すると、テストファイルやテスト対象ファイルに変更があると、自動的にすべてのテストを再実行する
sh
$ npx jest --watchAll
--coverage を付けて実行すると、コードカバレッジを計算する
sh
$ npx jest --coverage PASS ./index.test.js fizzBuzz() ✓ returns "FizzBuzz" for multiples of 3 and 5 (1 ms) ----------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ----------|---------|----------|---------|---------|------------------- All files | 75 | 50 | 100 | 66.66 | index.js | 75 | 50 | 100 | 66.66 | 4 ----------|---------|----------|---------|---------|------------------- Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 0.23 s, estimated 1 s Ran all test suites.

サンプルコード
greeting.test.js
const greeting = (guest) => `Hello, ${guest}!`; describe("greeting", () => { it("says hello", () => { expect(greeting("Jest")).toBe("Hello, Jest!"); }); });
メソッド
テストスイート を宣言する
テストのグルーピングを行い、第 1 引数にテストスイート名前、第 2 引数に 1 つ以上のテストを含む関数を受け取る
個別のテストを宣言する
第 1 引数にテスト名、第 2 引数に実際のテストコードを含む関数を受け取る
アサーションを作成する
テスト対象の値を受け取り、マッチャをメソッドとして持つオブジェクトを返す
厳密な 等価性 チェック( === )を行うマッチャ
オブジェクトの深い等価性をチェックするマッチャ
慣習的にテストスイート名には名詞、テスト名には動詞の文字列を渡す
これにより、テストがカバーしている機能を説明する完全な文章( greeting() says hello" )が出来上がる
Spec ではだいたいこれ radish-miyazaki