Nuxt.jsでは、プロジェクトを新規作成する際に単体テストフレームワークを利用するかどうかを選択することができます。今回は、単体テストフレームワークを選択せずに作成してしまったプロジェクトに単体テストフレーワークJestを導入する際に苦労した内容についてまとめておこうと思います。
目次
Jestとは
Jestは、Facebook社が主体となって開発しているOSSのJavascript Testingフレームワークです。シンプルさを売りにしているので、テストがスマートに書けるのが魅力です。
環境
今回は、typescriptが導入されているプロジェクトをターゲットとします。
- node 安定版(v14.4.0)
- typescript利用
- yarn
導入
簡単に導入手順を下記に示します。
Babelに対応した環境を作る
下記にBabel向けの環境構築手順を記載します。
エラーがでなければ、babelの設定は完了です。
Typescript向けの環境を作る
下記にTypescriptが利用できるように環境を構築します。
※Jestの導入ページを読むとts-jestを導入したほうが良さそうなので、ts-jestを導入しました。
エラーがでなければ、typescript向けの環境構築は完了です。
Vue向けの環境を作る
下記コマンドで必要なライブラリをインストールします。
babel6系とbable7系の2つがいる状態になっています。vue-jestがbabel6系に依存しているので、babel-coreにpeerDependencyになっているようです。
babel7系とbabel6系の共存について
babel6系のコアロジックは、babel-coreという名前でリリースされていたのですが、babel 7系では、@babel/coreに破壊的な変更がおこわなれています。6系と7系を共存させるには、いまのところ、babel-core@bridgeを利用するのが良さそうです。これを導入して無事解決しました!
まとめ
今回は、Jestを既存のNuxtプロジェクトに導入する中で発生したbabel絡みの問題に対しての対処を行いました。bablel絡みの問題は、なかなか調査が大変なので、vue-testも早めにBable7系へ移植されることを願います。