ES6の書式でJestでテストする (Bebelなしで)
やりたいこと
- Jest を使ったテストを導入したい
- ただ、
require
じゃなくてimport
とかのES6の構文を使いたい - Babelの設定とかで消耗したくない
注意事項
JestのES Modulesサポートはまだ実験段階で、サポートされてない機能が結構あるらしい。
やり方
jest
の導入
普通に npm
でインストールする。 --save-dev
で開発時のみ必要なDependencyであることを明示する。
npm install jest --save-dev
package.json
の編集
"scripts": { "test": "..." }
部分の編集"jest" { "transform": {} }
の追加
がポイント
{ "name": "paiza", "version": "0.0.1", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "node --experimental-vm-modules node_modules/.bin/jest" }, "author": "", "license": "ISC", "devDependencies": { "jest": "^26.6.3" }, "jest": { "transform": {} } }
transformの無効化
ドキュメントによれば、
- コードの変換を無効化する (->
transform: {}
を指定する) - 変換先をCommonJSじゃなくてESMにする
のいずれかが必要。今回できればBabelを使いたくないので、一つ目を採用。
nodeの --experimental-vm-modules
フラグの追加
そもそも node
自体に --experimental-vm-modules
フラグを渡さないとES Modulesの import
を認識してくれない。
よって、テストを実行する際にこのパラメータを加えておく。
参照
基本的に以下のドキュメントに従えばOK。