Babelを使っているときのAVAのテストコード記述について
JSのトランスパイラとしてBabelを使い、ES2017などでコードを書くようにしている場合、AVAを使ったテストの記述はどうすればよいのだろう。
実はAVAは特に設定も必要なくES2017でテストを記述することができる。
ES2017 support(2018/1/4時点)
が、テストコードの外からインポートされたコードについては、トランスパイルされないようになっており、ES2017のコードが通らない。
Transpiling imported modules(2018/1/4時点)
これを解決するにはBabelのrequire hookを使って、外部のコードを動的にトランスパイルしてインポートする必要がある。
require hookを使うには事前にBabel registerをインストールした上で、テストコードに直接import文を記述するか、 package.json
に設定を記述すればよい。
- テストコードに直接import文を記述する場合
import test from 'ava'; import 'babel-register'; // <- 外部コードを読み込む前にimport文を記述する ...
package.json
に設定を記述する場合
"ava": { "require": [ "babel-register" ] }
これで、ES2017の外部コードをインポートしたテストも動くようになる。