ES2015を使ってmochaのテストコードを書きたい。
具体的には、import
とexport
。
他の仕様には概ね対応していると思うが、これらモジュール機能は、現在のところmochaでは使えない。
そのため、テストコードのなかでこれらを使うとエラーになってしまう。
テストでexport
を使うことはあまりない気がするが、import
は頻出である。
例えば、Sinon.jsというテスト用のライブラリがあるが、これをimport
しようとするとエラーになってしまい、そもそもテストすることが出来ない。
import sinon from 'sinon'; const assert = require('assert'); describe('sinon', () => { it('has spy', () => { assert(Object.prototype.hasOwnProperty.call(sinon, 'spy')); }); });
SyntaxError: Unexpected token import
というエラーが出る。
Babelでトランスパイルしてからテストを行うようにすることで、これを解決できる。
まずは、必要なモジュールをインストールする。
$ npm i -D babel-register babel-preset-es2015
次に、.babelrc
を作成してBabelの設定を行う。
{ "presets": [ "es2015" ] }
最後に、./test/mocha.opts
を作成。
これは、mochaの設定ファイルである。
このファイルに以下のように書くことで、テスト実行時にBabelによるトランスパイルを行ってくれるようになる。
--compilers js:babel-register
先程のテストコードを実行すると、動いていることが分かる。
sinon ✓ has spy 1 passing (17ms)
なお、./test/mocha.opts
を作成せず、package.json
のnpmスクリプトに設定を書いても、同じことが出来る。
"scripts": { "test": "mocha --compilers js:babel-register" },
この状態で$ npm test
を実行すれば、先程と同じ結果を得られる。