見出し画像

Jest 入門

テストコードを書けるようにならないとなー、ということで入門。
機能がいっぱいありそうなので、とりあえず基本の部分だけ。

インストール

npm install --save-dev jest

実際のコード

// sum.js ////////////////////

const sum = (a,b) =>{
    return a + b;
}

module.exports = sum;

// sum.test.js ////////////////////
const sum = require('./sum');

// テストしたいファイル名に 〇〇.test.js とする

test(' 1 + 2 = 3 ', ()=>{
   expect(sum(1,2)).toBe(3);
})

expect() が expectationオブジェクトを返すので、
これに色々なメソッドが入っている。
「matchers」というらしい。
toBe(hoge) は === を使用して厳密な等価性をテスト する時に使うが、
オブジェクトを比較する時は toEqual(hoge) を使う。

false, null, undefined を個別で検証したい時や、 
false || null || undefined を検証したい時などは以下のmatchersがある。
便利。

toBeNull は null のみ一致します
toBeUndefined は undefined のみ一致します
toBeDefined は toBeUndefined の反対です
toBeTruthy は if ステートメントが真であるとみなすものに一致します
toBeFalsy は if ステートメントが偽であるとみなすものに一致します

package.json

  "scripts": {
   "test": "jest"
 },

実行結果

スクリーンショット 2021-09-23 15.38.07

通った。

ECMAScript Modules に対応させる

デフォルトだと、JestはCommonJSの仕様で動いているので、
ESMのモジュールをテストするとエラーが起きてしまう。

設定すれば、ESMもいける(Node version 14.13.1以降)

// package.json ////////////////////
// Windows環境の人は、 cross-envが必要

 "type": "module", // これをつける
 "scripts": {
   "test": "NODE_OPTIONS=--experimental-vm-modules jest"  // オプションをつける
 },
// sum.js ////////////////////

const sum = (a, b) => {
 return a + b;
};
export default sum;


// sum.test.js ////////////////////

import sum from "./sum.js";

test("adds 1 + 2 to equal 3", () => {
 expect(sum(1, 2)).toBe(3);
});