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"
},
実行結果
通った。
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);
});