というわけでテストを書く。
テストは mocha に実行させる。一方、桃は esm の文法に基づいてモジュールを分けてある。ここで問題が出てくる。ググればたくさんその手の話が出てくるが、要するに mocha、ひいては node.js が今現在 cjs と esm の過渡期にあって、まだあんまり esm の対応が行き届いていない。
mocha においても、import/export を使ったソースを渡してもエラーになる。その辺をどうするかはまさに議論中のようだ。
で、いくつかのワークアラウンドが考えられて:
- ブラウザ上でテストを実行する: cjs と esm の混乱はあくまで node.js の中の話である。ブラウザを起動してその上でテストを実行すれば普通に esm のコードがテスト対象になる、はず
- esm のコードを babel でトランスパイルした上でそれをテストする
- モジュールをダイナミックロードする
前2者はワークアラウンドにしては大掛かりになるので、最後の奴で行ってみよう。
const assert = require('assert');
let testfunc1, testfunc2;
before(() => import('./path/to/module').then(module => {
({testfunc1, testfunc2} = module);
});
describe('test', () => {
it('works', () => {
// test code with testfunc[12]
});
});
どうでもいいが最近のこの wordpress のエディタが使いにくい。